65.9K
CodeProject 正在变化。 阅读更多。
Home

C# 中的简单 XML 解析

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (13投票s)

2008 年 3 月 2 日

LGPL3

3分钟阅读

viewsIcon

175932

downloadIcon

5902

在 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.csshipmain.cs 中找到。 Notesmain.cs 在这里提供,以便为您提供一个关于解析代码外观和感觉的相当好的例子

snippet.jpg

那么,您如何使用这些示例呢? 执行以下步骤

  1. csharpxmlparsing.zip 文件解压缩到所需位置
  2. 启动 Visual Studio 2005/2008 命令提示符
  3. cd 到您解压缩 csharpxmlparsing.zip 的路径(位置)
  4. 运行名为 go.bat 的文件

此步骤将生成两个名为 notes.csshiporder.cs 的新文件。 这些是用于表示所提供的模式的结构的 C# 类。 这些文件永远不应该手动修改。 此外,将生成两个可执行文件,分别命名为:notes.exeshipmain.exe。 构建后,将执行这两个可执行文件,以便可以显示其输出。 输出应该类似于下面找到的输出

godotbat.jpg

关注点

如果您的模式发生变化怎么办? 使用此方法,只需使用 xsd.exe 实用程序重新生成您的对象绑定,并修改您的代码以支持已更改或引入的新结构。

历史

  • 2008 年 3 月 2 日:首次发布
© . All rights reserved.