C# 中的简单 XML 解析





4.00/5 (13投票s)
在 C# 中实现 XML 解析的最简单方法。
引言
假设您有一个 XML 模式,其中包含满足该模式的 XML 文件,您需要以一种易于阅读和维护的方式从 XML 文件中获取数据。 有很多种方法可以在任何语言(包括 C#)中解决这个问题。 XmlSerializer
是 C# 中快速简便解析 XML 的一站式商店。 本文的目的是概述如何为模式生成 C# 对象绑定以及使用这些绑定解析 XML 文件。 这是通过使用两组不同的 XML 模式和 XML 文件来演示的。
为什么不使用 XmlNode / XMLDocument?
使用本文中概述的方法可以提高 XML 解析代码的可读性和可维护性。 假设您收到了一段代码,并被告知它在以下行中收到了一个NullReferenceException
string s = xmlnode[x].LastChild.InnerText;
您可能首先会通过调试来逐步验证 xmlnode
, xmlnode[x]
和 LastChild
是否有效。 您可能会发现您的 XML 文件不包含给定 xmlnode[x]
的 LastChild
。 您将需要手动深入研究模式,验证 xmlnode[x]
的含义,并开始充当 XML/代码侦探。 这里的问题是,从代码本身来看,您对您正在处理的结构没有任何真正的指导。 现在,假设您得到了以下一行
string s = shiporder.Items[1].quantity;
此行让您更深入地了解您的代码想要做什么。 此外,它为读者提供了这些操作将要执行的结构的定义; 无需侦探工作。
背景
为了使用以下示例,您需要有一个可用的 Visual Studio 2005 或 2008 的副本。 如果您不熟悉这些环境分发的 xsd.exe 实用程序,我建议在命令提示符下运行 /? 以熟悉它。 此外,对 XML 和 XML 模式文档的基本理解也总是很有帮助。 用于本文的两个 XML 模式是从 这里 获得的。
Using the Code
csharpxmlparsing.zip 中提供的代码包含两个示例模式、XML 文件和测试代码。 提供的两个示例演示了编写解析代码时不同模式的外观和感觉。 以下是内容摘要。
以下文件与 notes
示例相关
notes.xml - notes data file
notes.xsd - notes schema
notesmain.cs - What you would have to write to parse notes XML files
以下文件与 shiporder
示例相关
shipmain.cs - What you would have to write to parse shiporder xml files
shiporder.xml - shiporder data file
shiporder.xsd - shiporder schema
如果需要解析 XML,您需要编写的两个文件可以在 notesmain.cs 和 shipmain.cs 中找到。 Notesmain.cs 在这里提供,以便为您提供一个关于解析代码外观和感觉的相当好的例子

那么,您如何使用这些示例呢? 执行以下步骤
- 将 csharpxmlparsing.zip 文件解压缩到所需位置
- 启动 Visual Studio 2005/2008 命令提示符
- cd 到您解压缩 csharpxmlparsing.zip 的路径(位置)
- 运行名为 go.bat 的文件
此步骤将生成两个名为 notes.cs 和 shiporder.cs 的新文件。 这些是用于表示所提供的模式的结构的 C# 类。 这些文件永远不应该手动修改。 此外,将生成两个可执行文件,分别命名为:notes.exe 和 shipmain.exe。 构建后,将执行这两个可执行文件,以便可以显示其输出。 输出应该类似于下面找到的输出

关注点
如果您的模式发生变化怎么办? 使用此方法,只需使用 xsd.exe 实用程序重新生成您的对象绑定,并修改您的代码以支持已更改或引入的新结构。
历史
- 2008 年 3 月 2 日:首次发布