我正在使用 C#/.NET 反序列化一个类似于此的 XML 文件:
<?xml version="1.0" encoding="utf-8" ?>
<Books>
<Book
Title="Animal Farm"
>
<Thing1>""</Thing1>
<Thing2>""</Thing2>
<Thing3>""</Thing3>
...
<ThingN>""</ThingN>
</Book>
... More Book nodes ...
</Books>
我的类,对于反序列化的 XML,如下所示:
[XmlRoot("Books")]
public class BookList
{
// Other code removed for compactness.
[XmlElement("Book")]
public List<Book> Books { get; set; }
}
public class Book
{
// Other code removed for compactness.
[XmlAttribute("Title")]
public string Title { get; set; }
[XmlAnyElement()]
public List<XmlElement> ThingElements { get; set; }
public List<Thing> Things { get; set; }
}
public class Thing
{
public string Name { get; set; }
public string Value { get; set; }
}
反序列化时,我希望将 Book 元素的所有子节点(<Thing1> 到 <ThingN>)反序列化为 Book 的 Things 集合。但是,我无法弄清楚如何做到这一点。现在,我坚持将 Thing 节点存储在 ThingElements 集合中(通过 XmlAnyElement)。
有没有办法将异构子节点反序列化为一个集合(非 XmlElements)?