XML列表的问题<;T>;C#中的反序列化
本文关键字:反序列化 gt lt 列表 问题 XML | 更新日期: 2023-09-27 18:26:05
我正在尝试反序列化XML,但是我使用的List对象有很多问题。
XML如下:
<EntriesSerialize>
<Entries>
<Entry file="myFile"
value="2000" />
<Entry file="myFile"
value="400" />
<Entry file="myFile"
value="200" />
</Entries>
</EntriesSerialize>
我的课程是:
[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; }
}
我用来反序列化这个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;
}
我在反序列化中调用的方法是反序列化(字符串内容),如下所示:
EntriesSerialize temp = Deserialize<EntriesSerialize>(data);
然而,当我使用C#调试器查看临时变量时,我发现EntriesList对象中只有一个元素,并且该元素的file和value属性为null。
注意:这些类的序列化按预期进行。
EntriesList
上的属性应该是:
[XmlArray("Entries"), XmlArrayItem("Entry")]
public List<Entry> EntriesList { get; set; }
您当前使用[XmlElement("Entries")]
的语法配置为:
<EntriesSerialize>
<Entries file="myFile" value="2000" />
<Entries file="myFile" value="400" />
<Entries file="myFile" value="200" />
</EntriesSerialize>
(仅供参考,[XmlType("...")]
属性在这种情况下都不使用,但它们也不会造成任何伤害)