MSDN Home > .NET Framework > 使用 .NET Framework 编程 > 使用 .NET Framework 中的 XML
.NET Framework 开发员指南
XML 文档对象模型 (DOM)
文档对象模型 (DOM) 类是 XML 文档的内存中表示形式。DOM 使您能够以编程方式读取、操作和修改 XML 文档。XmlReader 类也读取 XML,但它提供非缓存的只进、只读访问。这意味着使用 XmlReader 无法编辑属性值或元素内容,或无法插入和移除节点。编辑是 DOM 的主要功能。XML 数据在内存中表示是常见的结构化方法,尽管实际的 XML 数据在文件中时或从另一个对象传入时以线性方式存储。以下是 XML 数据。
输入
Carson
31.95
05/01/2001
MSPress
WA
下图显示将此 XML 数据读入 DOM 结构中时内存的构造。
XML 文档结构

在 XML 文档结构中,此图中的每个圆圈表示一个节点(称为 XmlNode对象)。XmlNode 对象是 DOM 树中的基本对象。XmlDocument 类(它扩展 XmlNode)支持用于对整个文档执行操作(例如,将文档加载到内存中或将 XML 保存到文件)的方法。此外,XmlDocument 提供了查看和操作整个 XML 文档中的节点的方法。XmlNode 和 XmlDocument 都具有性能和可用性增强,并具有进行下列操作的方法和属性: 访问和修改特定于 DOM 的节点,如元素节点、实体引用节点等。 除检索节点包含的信息(如元素节点中的文本)外,还检索全部节点。 注意 如果应用程序不需要 DOM 提供的结构或编辑功能,则 XmlReader 和 XmlWriter 类提供对 XML 的非缓存的只进流访问。有关更多信息,请参见用 XmlReader 读取 XML 和用 XmlWriter 编写 XML。Node对象具有一组方法和属性以及基本和定义完善的特性。其中的某些特性包括: 节点有单个父节点,父节点是节点的上一级节点。唯一没有父级的节点是文档根,因为它是顶级节点,包含了文档本身和文档片段。 大多数节点可以有多个子节点,子节点是节点的下一级节点。以下是可以有子节点的节点类型列表。 DocumentDocumentFragmentEntityReferenceElementAttributeXmlDeclaration、Notation、Entity、CDATASection、Text、Comment、ProcessingInstruction 和 DocumentType 节点没有子级。
处于同一级别、在关系图中由
book
和
pubinfo
节点表示的节点是同辈。
DOM 的一个特性是它处理属性的方式。属性是不属于父子关系和同辈关系的节点。属性被视为元素节点的属性,由名称和值对组成。例如,如果存在由与元素 price 关联的 format="dollar" 组成的 XML 数据,则单词 format 是名称,format 属性的值是 dollar。为检索 price 节点的 format="dollar" 属性,可以在游标位于 price元素节点时调用 GetAttribute。有关更多信息,请参见访问 DOM 中的属性。
将 XML 读入内存时会创建节点。然而,并非所有节点都是同一类型。XML 中的元素具有不同于处理指令的规则和语法。因此,在读取各种数据时,将向每个节点分配一种节点类型。此节点类型确定节点的特性和功能。
有关在内存中生成的节点类型的更多信息,请参见 XML 节点类型。有关在节点树中创建的对象的更多信息,请参见将对象层次结构映射到 XML 数据。
Microsoft 扩展了 W3C DOM 级别 1 和级别 2 中可用的 API,使 XML 文档的使用更容易。在完全支持 W3C 标准的同时,附加的类、方法和属性增加了使用 W3C XML DOM 可以完成的功能以外的功能。新类使您能够访问关系数据,为您提供与 ADO.NET 数据同步、同时将数据作为 XML 公开的方法。有关更多信息,请参见使 DataSet 与 XmlDataDocument 同步。
DOM 对于将 XML 数据读入内存以更改其结构、添加或移除节点,或者与元素包含的文本一样修改节点所保存的数据最有用。不过,在其他方案中,还有其他比 DOM 更快的类。对于对 XML 的快速非缓存只进流访问,请使用 XmlReader 和 XmlWriter。如果需要用游标模型和 XPath 进行随机访问,请使用 XPathNavigator 类。
请参见
XML 节点类型 | 将对象层次结构映射到 XML 数据
个人信息中心 |与我们联系
©2005 Microsoft Corporation. 版权所有. 保留所有权利 |商标 |隐私权声明
MSDN Home > .NET Framework > 使用 .NET Framework 编程 > 使用 .NET Framework 中的 XML.NET Framework 开发员指南
XML 文档对象模型 (DOM)
文档对象模型 (DOM) 类是 XML 文档的内存中表示形式。DOM 使您能够以编程方式读取、操作和修改 XML 文档。XmlReader 类也读取 XML,但它提供非缓存的只进、只读访问。这意味着使用 XmlReader 无法编辑属性值或元素内容,或无法插入和移除节点。编辑是 DOM 的主要功能。XML 数据在内存中表示是常见的结构化方法,尽管实际的 XML 数据在文件中时或从另一个对象传入时以线性方式存储。以下是 XML 数据。
输入
Carson
31.95
05/01/2001
MSPress
WA
下图显示将此 XML 数据读入 DOM 结构中时内存的构造。
XML 文档结构

在 XML 文档结构中,此图中的每个圆圈表示一个节点(称为 XmlNode对象)。XmlNode 对象是 DOM 树中的基本对象。XmlDocument 类(它扩展 XmlNode)支持用于对整个文档执行操作(例如,将文档加载到内存中或将 XML 保存到文件)的方法。此外,XmlDocument 提供了查看和操作整个 XML 文档中的节点的方法。XmlNode 和 XmlDocument 都具有性能和可用性增强,并具有进行下列操作的方法和属性: 访问和修改特定于 DOM 的节点,如元素节点、实体引用节点等。 除检索节点包含的信息(如元素节点中的文本)外,还检索全部节点。 注意 如果应用程序不需要 DOM 提供的结构或编辑功能,则 XmlReader 和 XmlWriter 类提供对 XML 的非缓存的只进流访问。有关更多信息,请参见用 XmlReader 读取 XML 和用 XmlWriter 编写 XML。Node对象具有一组方法和属性以及基本和定义完善的特性。其中的某些特性包括: 节点有单个父节点,父节点是节点的上一级节点。唯一没有父级的节点是文档根,因为它是顶级节点,包含了文档本身和文档片段。 大多数节点可以有多个子节点,子节点是节点的下一级节点。以下是可以有子节点的节点类型列表。 DocumentDocumentFragmentEntityReferenceElementAttributeXmlDeclaration、Notation、Entity、CDATASection、Text、Comment、ProcessingInstruction 和 DocumentType 节点没有子级。
处于同一级别、在关系图中由
book
和
pubinfo
节点表示的节点是同辈。
DOM 的一个特性是它处理属性的方式。属性是不属于父子关系和同辈关系的节点。属性被视为元素节点的属性,由名称和值对组成。例如,如果存在由与元素 price 关联的 format="dollar" 组成的 XML 数据,则单词 format 是名称,format 属性的值是 dollar。为检索 price 节点的 format="dollar" 属性,可以在游标位于 price元素节点时调用 GetAttribute。有关更多信息,请参见访问 DOM 中的属性。
将 XML 读入内存时会创建节点。然而,并非所有节点都是同一类型。XML 中的元素具有不同于处理指令的规则和语法。因此,在读取各种数据时,将向每个节点分配一种节点类型。此节点类型确定节点的特性和功能。
有关在内存中生成的节点类型的更多信息,请参见 XML 节点类型。有关在节点树中创建的对象的更多信息,请参见将对象层次结构映射到 XML 数据。
Microsoft 扩展了 W3C DOM 级别 1 和级别 2 中可用的 API,使 XML 文档的使用更容易。在完全支持 W3C 标准的同时,附加的类、方法和属性增加了使用 W3C XML DOM 可以完成的功能以外的功能。新类使您能够访问关系数据,为您提供与 ADO.NET 数据同步、同时将数据作为 XML 公开的方法。有关更多信息,请参见使 DataSet 与 XmlDataDocument 同步。
DOM 对于将 XML 数据读入内存以更改其结构、添加或移除节点,或者与元素包含的文本一样修改节点所保存的数据最有用。不过,在其他方案中,还有其他比 DOM 更快的类。对于对 XML 的快速非缓存只进流访问,请使用 XmlReader 和 XmlWriter。如果需要用游标模型和 XPath 进行随机访问,请使用 XPathNavigator 类。
请参见
XML 节点类型 | 将对象层次结构映射到 XML 数据
个人信息中心 |与我们联系
©2005 Microsoft Corporation. 版权所有. 保留所有权利 |商标 |隐私权声明





