DOM接口技术
DOM概述
DOM是什么
- Document Object Model 文档对象模型
- DOM是一个与平台无关,语言无关的应用程序接口
- DOM是W3C组织定义并公布的一个规范
DOM作用
- 提供一个统一的XML数据接口
- 应用DOM,可以动态创建文档,遍历文档,添加修改删除文档中的内容
- DOM接口规范提供了一种编写XML代码的方法
DOM的结构
-
DOM把文档表示为节点(Node)对象树
-
节点对象表示文档中XML元素,也代表文档内其他所有内容(比如文本
根元素,处理指令,注释文档类型,实体,实体引用,命名空间等多种对象模型
-
DOM树展示了XML文件提供的信息以及它们之间的关系。
DOM接口
-
Document
-
Node:代表DOM树中的一个节点 。
-
NodeList:表示有顺序关系的一组节点。
-
NamedNodeMap:通过名字来访问节点的集合。
Document接口
- 提供对文档数据访问和操作的入口,提供了创建其他节点对象的方法
Document.doctype => 拿到文档的 DOCTYPE
Document.documentElement => 拿到文档的根节点
node接口
DOM接口的很多接口是从node继承而来的,代表树的一个节点,提供访问DOM树某个元素的内容与信息的途径
node.nodeType => 节点类型
node.nodeName => 节点名称
nodeList接口
提供对节点集合的抽象定义,表示有顺序的集合
例如上述我们用node接口获得孩子节点
NodeList nl = node.childNodes => 获取孩子节点
Node child1 = nl.item(0); => 访问第一个孩子节点
NamedNodeMap
这个接口可以用名字来访问一组节点
例如上述我们用node接口获得node属性
NameNodeMap nnm = node.attributes; => 获得节点属性集合
string value = nnm.getNamedItem("xxx"); => 通过属性名获得某个属性值
DOM对象
- Document
- Element
- Attriubute
- Text
- 集合索引
Document对象
例子:加载XML文档
- 导入java依赖
import java.io.*; //Java基础包,包含各种IO操作
import javax.xml.parsers.*; //XML解析器接口
import org.w3c.dom.*; //XML的DOM实现
- 解析
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File("xxx.xml"));
} catch (Exception e) {
}
这个对象有很多属性和方法
注意这些属性都是私有属性,可以通过getxxx访问
例如 childNodes=> getChildNodes()
下面的其他对象也是一样的 (下面没有标粗的代表我觉得没用的
属性/方法 | 描述 |
---|---|
async | 表示xml的下载是否应当被同步处理 |
childNodes | 获得文档的子节点的节点列表 |
doctype | 文档的DTD声明 |
xmlEncoding | 编码方法 |
xmlStandalone | 文档是否为独立的 |
xmlVersion | 返回文档的XML版本 |
createAttribute(name) | 创建一个拥有指定名称的属性节点,返回新的Attr对象 |
createElement(name) | 创建元素节点 |
createTextNode(text) | 创建文本节点 |
getElementsByTagName() | 返回所有具有指定名称的元素节点 |
loadXML(text) | 通过解析XML标签字符串来组成文档 |
normalize() | 去掉xml文档中的空白部分 |
renameNode(node, uri, name) | 重新命名元素或者属性 |
getDocumentElement() | 获得文档的根节点 |
node
一下是node对象的属性
属性 | 描述 |
---|---|
firstChild | 返回节点的首个子节点。 |
lastChild | 返回节点的最后一个子节点。 |
nextSibling | 返回节点之后紧跟的同级节点。 |
nodeType | 返回节点的类型。 |
nodeValue | 设置或返回节点的值,根据其类型。 |
parentNode | 返回节点的父节点。 |
previousSibling | 返回节点之前紧跟的同级节点。 |
textContent | 设置或返回节点及其后代的文本内容。 |
需要注意的是如果要取出节点的值应该用 textContent
而不是 nodeValue
例如
<input /> => 取出value用nodeValue
例如
<text