C# 中 XML List<T> 反序列化的问题

Fel*_*ipe 3 c# xml serialization .net-4.0

我正在尝试反序列化 XML,但是我在使用 List 对象时遇到了很多问题。

XML 如下:

<EntriesSerialize>
    <Entries>
        <Entry file="myFile"
        value="2000" />
        <Entry file="myFile"
        value="400" />
        <Entry file="myFile"
        value="200" />
    </Entries>
</EntriesSerialize>
Run Code Online (Sandbox Code Playgroud)

我的课程是:

[XmlType("Entry")]
public class Entry
{
    public Entry()
    {

    }

    [XmlAttribute("file")]
    public string File { get; set; }

    [XmlAttribute("value")]
    public string Value { get; set; }

 }

[XmlType("EntriesSerialize")]
public class EntriesSerialize
{
    public EntriesSerialize()
    {
        EntriesList = new List<Entry>();
    }

    [XmlElement("Entries")]
    public List<Entry> EntriesList { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

我用来反序列化这个 XML 的代码是:

public static T Deserialize<T>(string content)
{
    byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(content);
    MemoryStream stream = new MemoryStream(byteArray);
    StreamReader reader = new StreamReader(stream);

    XmlSerializer serializer;
    serializer = new XmlSerializer(typeof(T));

    T model = (T)serializer.Deserialize(reader);
    reader.Close();

    return model;
}
Run Code Online (Sandbox Code Playgroud)

我在反序列化中调用的方法是 Deserialize(string content),如下所示:

EntriesSerialize temp = Deserialize<EntriesSerialize>(data);
Run Code Online (Sandbox Code Playgroud)

但是,当我使用 C# 调试器查看临时变量时,我看到 EntriesList 对象中只有一个元素,并且该元素的文件和值属性为 null。

注意:这些类的序列化按预期工作。

Mar*_*ell 5

上的属性EntriesList应该是:

[XmlArray("Entries"), XmlArrayItem("Entry")]
public List<Entry> EntriesList { get; set; }
Run Code Online (Sandbox Code Playgroud)

您当前的语法[XmlElement("Entries")]配置为:

<EntriesSerialize>
    <Entries file="myFile" value="2000" />
    <Entries file="myFile" value="400" />
    <Entries file="myFile" value="200" />
</EntriesSerialize>
Run Code Online (Sandbox Code Playgroud)

(有关信息,[XmlType("...")]此场景中未使用任何属性,但它们也不会造成任何伤害)