在 C# 中将 XML 字符串解析为类? [复制]

Posted

技术标签:

【中文标题】在 C# 中将 XML 字符串解析为类? [复制]【英文标题】:Parse XML string to class in C#? [duplicate] 【发布时间】:2012-07-03 06:49:37 【问题描述】:

可能重复: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 代码实例化类的方法?如果没有,实现此目的的最佳做法是什么?

【问题讨论】:

抱歉重复。感谢您的回答! :-) 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

XmlSerializer serializer = new XmlSerializer(typeof(Book));
using (StringReader reader = new StringReader(xmlDocumentText))

    Book book = (Book)(serializer.Deserialize(reader));

【讨论】:

+1 简洁的解决方案 这在我的项目中效果很好。谢谢! 简单明了..太棒了..谢谢:)

以上是关于在 C# 中将 XML 字符串解析为类? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中将日期字符串转换为 DateTime 对象? [复制]

在 C# 中将 .ddd(数字行驶记录仪)文件读取/解析为 XML

如何在 C# 中解析非常大的 XML 文件? [复制]

如何在 C# 中将字符串解码为 XML 字符串

在 C# 中将字符串解析为数组

如何使用 C# 将 JSON 对象解析为类