XML 文档对象模型 (DOM) 类是 XML 文档的内存中表示形式。 DOM 使您能够以编程方式读取、处理和修改 XML 文档。 XmlReader 类也读取 XML,但它提供非缓存的只进、只读访问。 这意味着使用 XmlReader 无法编辑属性值或元素内容,也无法插入和移除节点。 编辑是 DOM 的主要功能。 XML 数据在内存中表示是常见的结构化方法,尽管实际的 XML 数据在文件中时或从另一个对象传入时以线性方式存储。 以下是 XML 数据。

<?xml version="1.0"?>
  <books>
    <book>
        <author>Carson</author>
        <price format="dollar">31.95</price>
        <pubdate>05/01/2001</pubdate>
    </book>
    <pubinfo>
        <publisher>MSPress</publisher>
        <state>WA</state>
    </pubinfo>
  </books>

下图显示将此 XML 数据读入 DOM 结构中时如何构造内存。

XML 文档结构

在 XML 文档结构中,此图中的每个圆圈表示一个节点(称为 XmlNode 对象)。 XmlNode 对象是 DOM 树中的基本对象。 XmlDocument 类(扩展 XmlNode)支持用于对整个文档执行操作(例如,将文档加载到内存中或将 XML 保存到文件中)的方法。 此外,XmlDocument 提供了查看和处理整个 XML 文档中的节点的方法。 XmlNodeXmlDocument 都具有性能和可用性增强,并通过方法和属性执行下列操作:

  • 访问和修改 DOM 特定的节点,如元素节点、实体引用节点等。

  • 除检索节点包含的信息(如元素节点中的文本)外,还检索整个节点。

说明:

如果应用程序不需要 DOM 提供的结构或编辑功能,则 XmlReaderXmlWriter 类提供对 XML 的非缓存的只进流访问。 有关更多信息,请参见用 XmlReader 读取 XML 和使用 XmlWriter 编写 XML。

Node 对象具有一组方法和属性以及基本的和定义完善的特性。 其中的某些特性包括:

  • 节点有单个父节点,父节点是与节点相邻的上一级节点。 唯一没有父级的节点是文档根,因为它是顶级节点,包含了文档本身和文档片段。

  • 大多数节点可以有多个子节点,子节点是与节点相邻的下一级节点。 以下是可以有子节点的节点类型列表。

    • Document

    • DocumentFragment

    • EntityReference

    • Element

    • Attribute

    XmlDeclarationNotationEntityCDATASectionTextCommentProcessingInstructionDocumentType 节点没有子节点。

  • 处于同一级别、在关系图中由 bookpubinfo 节点表示的节点是同辈。

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 同步。

在将 XML 数据读入内存,以更改其结构、添加或移除节点或者与在元素包含的文本中一样修改节点所保存的数据时,DOM 最有用。 不过,在其他方案中,还有其他比 DOM 更快的类。 要对 XML 进行快速非缓存只进流访问,请使用 XmlReaderXmlWriter。 如果需要用游标模型和 XPath 进行随机访问,请使用 XPathNavigator 类。

转载于:https://www.cnblogs.com/tanding/archive/2012/07/06/2579400.html

XML 文档对象模型 (DOM)细说相关推荐

  1. Java中如何引用文档对象模型_在JAVA中使用文档对象模型DOM经验小结

    文档对象模型 (DOM) 是一个文档标准,对于完备的文档和复杂的应用程序,DOM 提供了大量灵活性.DOM标准是标准的.它很强壮且完整,并且有许多实现.这是许多大型安装的决定因素--特别是对产品应用程 ...

  2. html中js方法中如何传递本元素对象,JS HTML DOM (文档对象模型)

    DOM简介 当网页加载时,浏览器会创建页面的文档对象模型(DOM).通过DOM,JS可以对HTML实现以下操作: 改变页面中的所有HTML元素. 改变页面中的所有HTML属性. 改变页面中的所有CSS ...

  3. dom文档对象手册_编程小白网页学习笔记之文档对象模型(DOM)

    经过一周的学习,我这个前端小白对网页的学习,又有了新的进展,这不过来跟大家分享我的心得了.这次要分享的,主要就是我的学习的途径.上次很随意地开始了一个网页代码的初印象,还记得上次写的那几行小代码嘛,那 ...

  4. DOM(文档对象模型)

    文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法. DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 先来看看下面代码: 将HT ...

  5. JavaScript学习总结(一)——ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)...

    一.JavaScript简介 JavaScript是一种解释执行的脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型,它遵循ECMAScript标准.它的解释器被称为JavaScript引 ...

  6. 详细了解文档对象模型(DOM)

    我们都听说过与JavaScript相关的DOM或文档对象模型.DOM是Web开发中一个非常重要的概念.没有它,我们就无法在浏览器中动态修改HTML页面. 学习和理解DOM可以更好地访问.修改改和监听H ...

  7. BOM(浏览器对象模型)和DOM(文档对象模型)

    什么是BOM(浏览器对象模型) BOM:(Browser Object Mode) 浏览器对象模型. 由于现代浏览器已经(几乎)实现了 JavaScript 交互性方面的相同方法和属性,因此常被认为是 ...

  8. dom定义了访问html文档对象的,HTML DOM (文档对象模型)

    HTML DOM (文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. HTML DOM 树 DO ...

  9. 蓝旭前端预习5之DOM(文档对象模型)

    目录 一.Web API 1.作用 2.分类 二.DOM(文档对象模型) 1.概念 2.作用 3.DOM树 4.DOM对象 三. 获取/查找DOM元素(拿过来) 1.根据CSS选择器来获取DOM元素 ...

最新文章

  1. 富国银行是如何为公有云转型做准备的
  2. (转)从CPU架构和技术的演变看GPU未来发展
  3. 如何修复网站漏洞Discuz被挂马 快照被劫持跳转该如何处理
  4. XP 风格的可拖动列、可排序、可改变宽度的DataGrid的例子
  5. JDK注解(内置和自定义)
  6. c++随机打乱数组_【洗牌算法】你确定这样的抽奖算法是随机的?
  7. 深入 AngularUI Router
  8. Struts2之一个Action包含多个控制处理逻辑
  9. 最懒惰的算法—KNN
  10. Leetcode 14.最长公共前缀
  11. 【默认加入持久化机制,防止消息丢失,v0.0.3】对RabbitMQ.Client进行一下小小的包装,绝对实用方便...
  12. spring datasource oracle,spring中2种oracle数据源的配置
  13. suma在c语言中表示什么变量,C语言题
  14. 黑金AX301 SDRAM读写
  15. margin,padding之间的比较
  16. 行测题相关,在线测评(图形找规律。逻辑思维)
  17. 【预测模型】基于粒子群优化宽度学习实现预测matlab代码
  18. Java for循环的几种用法详解(转载)
  19. 转载一篇c语言深度文章 《一个“蝇量级” C 语言协程库》
  20. redis集群搭建及原理

热门文章

  1. Flutter Row和 Column 布局、线性布局概述
  2. 华为lab-rs-v1-2.9_OSPF区域34
  3. QTP报错“缺少对象WScript”
  4. ZeroC ICE源代码中的那些事 - 嵌套类和局部类
  5. iOS使用新浪微博、微信官方SDK分享内容
  6. 课下作业:评估输入法(搜狗)
  7. tcp 出现rst情况整理
  8. vs2010下载链接中国简体(中国含msdn)
  9. JAVA笔记:Java常用类库
  10. FreeMarker中文API手冊(完整)