【发布时间】:2016-04-22 23:07:16
【问题描述】:
我无法将 xml 反序列化为包含列表的类。一切都在对象中构建良好,直到它到达列表。我已经阅读了这里的所有帖子并尝试了几乎所有方法,但似乎仍然很糟糕。
XML: ("text.xml")
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<example>
<id>123456</id>
<messages>
<message>
<words>Hello</words>
</message>
<message>
<words>world</words>
</message>
</messages>
</example>
代码:
static void Main(string[] args) {
try {
XmlSerializer serializer = new XmlSerializer(typeof(Example));
XmlDocument objDoc = new XmlDocument();
objDoc.Load("test.xml");
XmlReader reader = XmlReader.Create(new StringReader(objDoc.OuterXml));
Example example;
example = (Example)serializer.Deserialize(reader);
Console.WriteLine(example.Id.ToString());
Console.WriteLine(example.Messages.Count.ToString());
Console.WriteLine(example.Messages[0].Words);
}
catch(Exception ex) {
Console.Write(ex.Message);
}
Console.ReadLine();
}
[XmlRoot("example")]
public class Example {
[XmlElement("id")]
public int Id {
get {
return id;
}
set {
id = value;
}
}
private int id;
[XmlElement("messages")]
public List<Message> Messages {
get {
return messages;
}
set {
messages = value;
}
}
private List<Message> messages;
}
[XmlRoot("message")]
public class Message {
[XmlElement("words")]
public string Words {
get {
return words;
}
set {
words = value;
}
}
private string words;
}
输出:
123456
1
我是否缺少序列化程序需要的标记?或者我想要完成的事情是不可能的?非常感谢任何指向正确方向的指针或推动。
【问题讨论】:
标签: c# xml deserialization