初学XML(4) DOM
DOM:Document Object Model???
文档对象模型(元素对象 元素值对象 属性对象 属性值对象)
一. XML DOM对象
1. DOM将XML文档结构化为Node(节点) 对象的层次结构.
2. Node 接口描述了各对文档对象的共有属性,并提供了几种检索特定类型信息的简单方法。
3. DOM中的大量的对象接口。
二. XML DOMDocument对象
1. DOMDocument对象表示XML文件的根, 是DOM中表示的第一个对象.
2. XML 文件加载入DOMDocument, 然后 DOMDocument验证些文件及其外部引用,如DTD。
3. 这是唯一一个可以创建的对象。
4. 以下代码片段创建了一个DOMDocument对象,并将一个XML文件载入至此对象。
BufferedReader in= new BufferedReader(new FileReader("XML文件名"));
DOMParser parser = new DOMParser();
parser.parse(new InputSource(in));
Document doc = parser.getDocument();
//特别注意--XML文件名--的路径中不能有中文字出现,否则会出错。
//出错提示 Exception in thread "main" java.net.MalformedURLException: no protocol: xml文件名.xml
三. XML DOMNode对象
1. DOMNode对象是DOM 中的主要对象。
2. 所有其他DOM对象,都继承此对象的属性。如: DOMAttribute, DOMElement,DOMText.
3. 以下代码段创建了一个节点和一个文本节点。然后将文本节点附加到节点。
NodeList n1 = doc.getElementsByTagName("*"); //文本节点
Node n;
n = n1.item(0);
System.out.print(n.getNodeName());
四. XML DOMNodeList对象
1. DOMNodeList对象是一个节点集合,它能够顺序遍历一个节点的所有子节点。
2. 可用 For Each ... Next 循环来进行遍历。
3. 可以使用item属性随机访问节点。 item属性能够直接定位到指定节点。
4. 属性 length 返回一个整数, 指示列表中的节点数。 getLength() 获得节点数.
5. 方法 item(index) 返回节点对象列表中的索引项,从零开始。
五. XML DOMElement 对象
1. DOMElement 对象表示XML树中的每个元素,它操作元素以及与该元素相关的属性.
2. DOMElement 对象具有不同的用于获取属性的信息的方法.
3. DOMElement 对象的属性. 如下:
tagname ------- 返回元素的标签名称.
getAttribute(attrName) ------返回指定属性的值.
getAttributeNode(attrName) -----返回指定属性节点的引用.
setAttribute(attrName,value) -----设置指定属性的值.
setAttributeNode(attrName) -----将Attribute节点添加的元素.
removeAttribute(attrName) -----删除元素的指定属性.
removeAttributeNode(attrName) -----删除元素的指定属性节点.
4. 以下片段返回XML的根元素.
NodeList n1 = doc.getElementsByTagName("*");
Element e = (Element)n1.item(0);
System.out.println(e.getTagName()+e.getFirstChild().getNodeValue());
NamedNodeMap nnm = e.getAttributes();
六. XML DOMAttribute对象
1. DOMAttribute 表示元素的属性.
2. 通常在XML 的DTD 和Schema中定义.
3. 以下段码片段使用在DTD中定义的属性名称, 从根元素的第一个子元素检索属性对象.
Attr attr;
NamedNodeMap nnm;
attr = (Attr)nnm.item(0);
System.out.print("属性是: "+attr.getName()+" ="+attr.getValue());
七. XML DOMText对象
1. DOMText 对象表示元素属性的文本内容.
2. 方法 splitText(offset) 将文本节点分为两个文本节点, 每个带有部分原始文本内容.
八.
java实现是依靠xerces实现的,用户必须安装xerces.jar到 class_path中,并设置成第一项。
import org.apache.xerces.parsers.*;