Visual Studio 中的 .NET Framework 编程——XML 文档和数据(http://msdn.microsoft.com/zh-cn/library/2bcctyt8(v=vs.80).aspx)
1、.NET Framework 中的 XML 结构摘要(http://msdn.microsoft.com/zh-cn/library/4x4kfk8w(v=vs.80).aspx)
XmlReader 类提供对 XML 数据进行快速、非缓存、只进访问。XmlReader 对象使用 System.Xml.XmlReader.Create 方法创建。通过 XmlReaderSettings 类可以指定要在所创建的 XmlReader 对象上启用的功能集。
②基于流的 XML 创建
XmlWriter 类提供生成包含 XML 数据的流或文件的非缓存、只进方式。XmlWriter 对象使用 System.Xml.XmlWriter.Create 方法创建。通过 XmlWriterSettings 类可以指定要在所创建的 XmlWriter 对象上启用的功能集。
③内存中 XML 处理
XPathNavigator——XPathNavigator 类通过 XML 文档上的游标模型提供多个编辑选项和导航功能。XML 文档可以包含在 XPathDocument 或 XmlDocument 对象中。
2、使用DOM模型处理XML数据
①XML 文档对象模型 (DOM)
XML 文档对象模型 (DOM) 类是 XML 文档的内存中表示形式。DOM 使您能够以编程方式读取、处理和修改 XML 文档。XmlReader 类也读取 XML,但它提供非缓存的只进、只读访问。这意味着使用 XmlReader 无法编辑属性值或元素内容,也无法插入和移除节点。编辑是 DOM 的主要功能。XML 数据在内存中表示是常见的结构化方法,尽管实际的 XML 数据在文件中时或从另一个对象传入时以线性方式存储。XmlNode 对象是 DOM 树中的基本对象。XmlDocument 类(扩展 XmlNode)支持用于对整个文档执行操作(例如,将文档加载到内存中或将 XML 保存到文件中)的方法。此外,XmlDocument 提供了查看和处理整个 XML 文档中的节点的方法。
在将 XML 数据读入内存,以更改其结构、添加或移除节点或者与在元素包含的文本中一样修改节点所保存的数据时,DOM 最有用。不过,在其他方案中,还有其他比 DOM 更快的类。要对 XML 进行快速非缓存只进流访问,请使用 XmlReader 和 XmlWriter。如果需要用游标模型和 XPath 进行随机访问,请使用 XPathNavigator 类。
②XML 节点类型(http://msdn.microsoft.com/zh-cn/library/3k5w5zc3(v=vs.80).aspx)及XML 文档对象模型 (DOM)层次结构(http://msdn.microsoft.com/zh-cn/library/xe9470fe(v=vs.80).aspx)
XML 信息从不同的格式读入内存。读取源包括字符串、流、URL、文本读取器或 XmlReader 的派生类。Load 方法将文档置入内存中并包含可用于从每个不同的格式中获取数据的重载方法。还存在 LoadXml 方法,该方法从字符串中读取 XML。不同的 Load 方法影响在加载 XML 文档对象模型 (DOM) 时创建的节点。Load方法的区别:
创建空白节点:加载文档时,可以设置保留空白并在文档树中创建 XmlWhitespace 节点的选项。若要创建空白节点,请将 PreserveWhitespace 属性设置为 true。如果文档从读取器加载,只有 XmlTextReader 上的 WhitespaceHandling 属性未设置为 WhitespaceHandling.None 时,XmlDocument 类上 PreserveWhitespace 标志属性的设置才会影响 XmlWhitespace 节点的创建,读取器上 WhitespaceHandling 属性的值优先于 XmlDocument 上该标志的设置。
从特定节点开始加载 XML 或加载整个 XML 文档:如果读取器处于初始状态,Load 将使用读取器中的全部内容,并通过读取器中的所有数据生成 XML 文档对象模型 (DOM)。如果读取器已位于文档中某个位置的节点上,并且将读取器传递给 Load 方法,Load 会尝试将当前节点及其所有同辈节点(直到关闭当前深度的结束标记)读入内存。如果读取器定位于对于文档的根级别来说无效的叶节点(如空白或属性节点),则读取器继续读取,直到定位在可用于根的节点上。文档在此时开始加载。
在 XML 加载时进行验证:方法是将架构验证 XmlReader 传递给 XmlDocument 类的 Load 方法,也可以在 DOM 中使用 XmlDocument 类的 Validate 方法来验证以前未经过验证的 XML 文档。(http://msdn.microsoft.com/zh-cn/library/w5aahf2a(v=vs.80).aspx)
⑤实体???
⑥将节点插入XML文档中
在DOM中新建节点:XmlDocument 为所有节点类型提供了 create 方法。
复制现有节点:ImportNode 方法是将节点或整个节点子树从一个 XmlDocument 复制到另一个 XmlDocument 的机制。
复制文档片段:可以创建一个 XmlDocumentFrament 节点,然后在它下面添加节点。
⑦节点、属性和内容的选取——XPath(http://www.w3school.com.cn/xpath/index.asp)
⑧移除XML文档中的节点、内容和值
移除节点:要移除 XML 文档对象模型 (DOM) 中的节点,请使用 RemoveChild方法移除特定节点。要移除 DOM 中的多个节点,请使用 RemoveAll 方法移除当前节点的所有子级和属性。
移除节点属性:从属性集合中移除它们(移除集合属性中的属性:Remove 、RemoveAll、RemoveAt ;直接移除节点属性:RemoveAllAttributes 、 RemoveAttributeAt )。另一个替换方法是获取元素,获取属性集合中的属性并直接移除属性节点。当移除在文档类型定义 (DTD) 中定义为默认属性的属性时有特殊限制。除非移除了默认属性所属的元素,否则不能移除默认属性。