15

可能重复:
如何反序列化 XML 文档

假设我有一个在 C# 中这样定义的类:

public class Book
{
    public string Title {get; set;}
    public string Subject {get; set;}
    public string Author {get; set;}
}

假设我有如下所示的 XML:

<Book>
    <Title>The Lorax</Title>
    <Subject>Children's Literature</Subject>
    <Author>Theodor Seuss Geisel</Author>
<Book>

如果我想Book使用这个 XML 实例化类的实例,我知道的唯一方法是使用 XML Document 类并枚举 XML 节点。

.net 框架是否提供了一些用 XML 代码实例化类的方法?如果没有,实现此目的的最佳实践是什么?

4

2 回答 2

65

您可以只使用 XML 序列化从 XML 创建类的实例:

XmlSerializer serializer = new XmlSerializer(typeof(Book));
using (StringReader reader = new StringReader(xmlDocumentText))
{
    Book book = (Book)(serializer.Deserialize(reader));
}
于 2012-07-02T20:37:59.580 回答
8

有几种方法可以反序列化 XML 文档 - 现有XmlSerializerSystem.Xml.Serialization和较新DataContractSerializerSystem.Runtime.Serialization.

两者都要求您使用告诉序列化程序如何操作的属性来装饰您的类成员(每个属性都有不同的属性)。

于 2012-07-02T20:33:36.600 回答