在C#中将XML字符串解析为类?

时间:2012-07-02 20:31:22

标签: c# .net xml class

  

可能重复:
  How to Deserialize XML document

假设我在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>

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

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

2 个答案:

答案 0 :(得分:41)

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

XmlSerializer serializer = new XmlSerializer(typeof(Book));
using (StringReader reader = new StringReader(xmlDocumentText))
{
    Book book = (Book)(serializer.Deserialize(reader));
}

答案 1 :(得分:8)

有多种方法可以反序列化XML文档 - 生成在System.Xml.Serialization中的XmlSerializer和位于System.Runtime.Serialization中的较新DataContractSerializer

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