您的位置:首页 > 其它

文档对象模型 (DOM)

2010-11-11 16:38 288 查看
XML 结构的一种通用接口:

DOM 是处理 XML 文档结构的一种接口。作为一个 W3C 项目,DOM 的设计目标是提供一组对象和方法,使程序员的工作更轻松。

当使用 DOM 解析器解析一个 XML 文档时,您得到一个层次化的数据结构 (DOM 树),它表示解析器在 XML 文档中发现发现的所有内容,然后您可以使用 DOM 函数操纵这棵树。您可以搜索树中的内容、移动分支、增加新的分支或者删除树的一部分。

了解 Node:

您已经知道 DOM 解析器返回一个树状结构,这个 DOM 树包括一些 Node。从 java 语言的角度看,Node 是一个接口。Node 是 DOM 的基本数据类型,DOM 树中的所有事物都是这种或那种类型的 Node。

DOM level 1 还定义了 Node 接口的几种子接口:

1.Element: 表示源文档中的一个 XML 元素。

2.Attr: 表示 XML 元素的一个属性。

3.Text: 一个元素的内容。这意味着带有文本的元素包含文本节点孩子,元素的文本 不是 元素本身的一个属性

4.Document: 表示整个 XML 文档。解析的每个 XML 文档有且只有一个 Document 对象。给定一个 Document 对象就可以找到 DOM 树的根,从这个根可以使用 DOM 函数读和操纵树。

其他的节点类型包括:Comment 表示 XML 文件中的注释、ProcessingInstruction 表示处理指令、CDATASection 表示 CDATA 节。

注意: “元素” 和 “标签”这两个词有不同的含义。元素 是指起始元素、结束元素以及两者之间的一切内容,包括属性、文本、注释以及子元素。标签 是一对<尖括号>和<尖括号>之间的内容,包括元素名和所有属性。比如 <p class="blue">是一个标签 </p>也是;而 <p class="blue">The quick brown fox</p> 是一个元素。

常用 DOM 方法

处理 DOM 经常要用到以下方法:

1.Document.getDocumentElement(); 返回 DOM 树的根。(该函数是 Document 接口的一个方法,没有定义其他的 Node 子类型。)

2.Node.getFirstChild() 和 Node.getLastChild(): 返回给定 Node 的第一个和最后一个孩子。

3.Node.getNextSibling() 和 Node.getPreviousSibling(); 返回给定 Node 的下一个和上一个兄弟。

4.Element.getAttribute(String attrName): 对于给定的 Element , 返回名为 attrName 的属性的值。如果需要 "id" 属性的值,可以使用 Element.getAttribute("id")。如果该属性不存在,该方法返回一个空字符串("")。

删除空格:

DomOne 生成的结果有很多空格,包括元素之间的空格。许多情况下,您可能并不关系这些空格。比方说,如果只是需要得到十四行诗的每行文本,用于缩进显示每个 <line> 元素的断行和空格并不重要。

要知道整个 DOM 树都是对象,所有的空格节点实际上也是 java 对象。这些对象要占用内存,创建和销毁它们要花费处理时间,您的代码必须发现并忽略它们。显然,如果能够告诉解析器完全不必创建这类对象,就可以节约时间和内存,这总是值得追求的目标。

有幸的是,JAXP 的 DocumentBuilderFactory 提供了一种忽略不重要的空格的方法。 setIgnoringElementContentWhitespace(boolean) 方法如它的名称所示,从内容中删除了空格节点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: