反序列化XML

反序列化XML

问题描述:

我要反序列化在C#(.NET 2.0)一个XML文件中。

I want to deserialize a XML file in C# (.net 2.0).

在XML的结构是这样的:

The structure of the XML is like this:

<elements>
   <element>
     <id>
       123
     </id>
     <Files>
       <File id="887" description="Hello World!" type="PDF">
         FilenameHelloWorld.pdf
       </File>
     </Files>
   </element>
<elements>

当我尝试反序列化在C#这个结构,我得到的文件名有问题,该值为NULL,我怎么连尝试code我的File类。

When I try to deserialize this structure in C#, I get a problem with the Filename, the value is always NULL, even how I try to code my File class.

请帮助我。 ; - )

Please help me. ;-)

以下工作正常,我:

public class element
{
    [XmlElement("id")]
    public int Id { get; set; }

    public File[] Files { get; set; }
}

public class File
{
    [XmlAttribute("id")]
    public int Id { get; set; }

    [XmlAttribute("description")]
    public string Description { get; set; }

    [XmlAttribute("type")]
    public string Type { get; set; }

    [XmlText]
    public string FileName { get; set; }
}

class Program
{
    static void Main()
    {
        using (var reader = XmlReader.Create("test.xml"))
        {
            var serializer = new XmlSerializer(typeof(element[]), new XmlRootAttribute("elements"));
            var elements = (element[])serializer.Deserialize(reader);

            foreach (var element in elements)
            {
                Console.WriteLine("element.id = {0}", element.Id);
                foreach (var file in element.Files)
                {
                    Console.WriteLine(
                        "id = {0}, description = {1}, type = {2}, filename = {3}", 
                        file.Id,
                        file.Description,
                        file.Type,
                        file.FileName
                    );
                }
            }

        }
    }
}