C#入门:掌握XmlDom操作与命名空间处理

需积分: 13 2 下载量 104 浏览量 更新于2024-07-29 收藏 1.11MB DOC 举报
C# 操作XML文件是编程实践中常见且实用的一部分,特别是在构建Web服务等场景中。本文将详细介绍如何使用C#的基本XmlDom方式来处理XML文档,包括加载XML、解析无命名空间和命名空间的XML内容。 1. XmlDom操作基础 - C#从.NET Framework 1.0开始就支持Xml Dom(Document Object Model)方式,这是一种基于对象模型的XML处理方法。加载XML主要有两种方式: - 从流或Reader加载,如从文件或网络请求中读取XML数据: ```csharp XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(new StreamReader("path_to_xml_file.xml")); ``` - 从字符串直接加载: ```csharp string xmlString = "<example><data><item>...</item></data></example>"; xmlDoc.LoadXml(xmlString); ``` 2. 解析无命名空间XML - 当需要获取`<data>`节点下的所有`<item>`元素的文本时,直接使用`ChildNodes`可能会包含非`<item>`节点,造成不必要的干扰: ```csharp XmlNodeList items = xmlDoc.SelectSingleNode("//data").ChildNodes; foreach (XmlNode item in items) { Console.WriteLine(item.InnerText); } ``` - 若要排除非`<item>`节点,应使用XPath表达式来筛选: ```csharp XPathNavigator navigator = xmlDoc.CreateNavigator(); XPathExpression expression = navigator.Compile("//data/item"); XPathNodeIterator iterator = expression.Select(); while (iterator.MoveNext()) { Console.WriteLine(iterator.Current.Value); } ``` 3. 处理带命名空间的XML - XML命名空间在实际项目中广泛存在,如需处理这样的XML: ```xml <root xmlns="http://example.com"> <data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd"> <item>...</item> <other>...</other> </data> </root> ``` - 需要在XPath表达式中明确指定命名空间: ```csharp XPathExpression xpathExpression = navigator.Compile($"//{xmlnsNS}data/{xsiNS}item"); ``` - 这样可以确保只选择到正确的元素。 通过这些步骤,C#提供了一套方便的工具来处理XML,但同时也需要注意,了解底层的DOM操作有助于理解代码的工作原理和处理异常情况。尽管90%的场景下C#的抽象API可能足够使用,但掌握基础的XMLDOM操作对于理解和解决复杂问题仍然至关重要。对于新一代的C#开发者,学习XML的基本操作是提高能力不可或缺的一部分。