黑马程序员技术交流社区
标题:
java培训之DOM API概述
[打印本页]
作者:
zzj123
时间:
2017-6-13 10:50
标题:
java培训之DOM API概述
DOM API概述
1 Document对应XML文档
无论使用什么DOM解析器,最终用户都需要获取到Document对象,一个Document对象对应整个XML文档。也可以这样说,Document对象就是XML文档在内存中的表示形式。
通常我们最为“关心”的就是文档的根元素。所以我们必须要把Document获取根元素的方法记住:Element getDocumentElement()。然后通过根元素再一步步获取XML文档中的数据。
2 DOM API中的类
在DOM中提供了很多接口,用来描述XML文档中的组成部分。其中包括:文档(Document)、元素(Element)、属性(Attr)、文本(Text)、注释(Comment)、CDATA段(CDATASection)等等。无论是哪种XML文档组成部分,都是节点(Node)的子接口。
3 Node方法介绍
Node基本方法:
String getNodeName():获取当前节点的名字。如果当前节点是Element,那么返回元素名称。如果当前节点是Text那么返回#text。如果当前节点是Document那么返回#document;
String getNodeValue():获取当前节点的值。只有文本节点有值,其它节点的值都为null;
String getTextContext():获取当前节点的文本字符串。如果当前节点为Text,那么获取节点内容。如果当前节点为Element,那么获取元素中所有Text子节点的内容。例如当前节点为:<name>zhangSan</name>,那么本方法返回zhangSan。如果当前节点为:<student><name>zhangSan</name><age>23</age><sex>male</sex></student>,那么本方法返回zhangSan23male。
short getNodeType():获取当前节点的类型。Node中有很多short类型的常量,可以通过与这些常量的比较来判断当前节点的类型。if(node.getNodeType() == Node.ELEMENT_NODE);
Node获取子节点和父节点方法,只有Document和Element才能使用这些方法:
NodeList getChildNodes():获取当前节点的所有子节点。NodeList表示节点列表,它有两个方法:
int getLength():获取集合长度;
Node item(int index):获取指定下标的节点。
Node getFirstNode():获取当前节点的第一个子节点;
Node getLastNode():获取当前节点的最后一个子节点;
Node getParentNode():获取当前节点的父节点。注意Document的父节点为null。
Node获取弟兄节点的方法,只有Element才能使用这些方法:
Node getNextSibling():获取当前节点的下一个兄弟节点;
Node getPreviousSibling():获取当前节点的上一个兄弟节点。
Node添加、替换、删除子节点方法:
Node appendChild(Node newChild):把参数节点newChild添加到当前节点的子节点列表的末尾处。返回值为被添加的子节点newChild对象,方便使用链式操作。如果newChild在添加之前已经在文档中存在,那么就是修改节点的位置了;
Node insertBefore(Node newChild, Node refNode):把参数节点newChild添加到当前节点的子节点refNode之前。返回值为被添加的子节点newChild对象,方便使用链式操作。如果refNode为null,那么本方法与appendNode()方法功能相同。如果newChild节点在添加之前已经在文档中存在,那么就是修改节点的位置了。
Node removeNode(Node oldChild):从当前节点中移除子元素oldChild。返回值为被添加的子节点oldChild对象,方便使用链式操作。
Node replaceNode(Node newChild, Node oldChild):将当前节点的子节点oldChild替换为newChild。
Node获取属性集合方法,只有Element可以使用:
NamedNodeMap getAttributes():返回当前节点的属性集合。NamedNodeMap表示属性的集合,方法如下:
int getLength():获取集合中属性的个数;
Node item(int index):获取指定下标位置上的属性节点;
Node getNamedItem(String name):获取指定名字的属性节点;
Node removeNamedItem(String name):移除指定名字的属性节点,返回值为移除的属性节点;
Node setNamedItem(Node arg):添加一个属性节点,返回值为添加的属性节点。
Node的判断方法:
boolean hasChildNodes():判断当前节点是否有子节点;
boolean hasAttribute():判断当前节点是否有属性。
4 Docment方法介绍
创建节点方法:
Attr createAttribute(String name):创建属性节点;
CDATASection createCDATASection(String data):创建CDATA段节点;
Comment createComment(String data):创建注释;
Element createElement(String tagName):创建元素节点;
Text createTextNode(String data):创建文本节点;
获取子元素方法:
Element getElementById(String elementId):通过元素的ID属性获取元素节点,如果没有DTD指定属性类型为ID,那么这个方法将返回null;
NodeList getElementsByTagName(String tagName):获取指定元素名称的所有元素;
Element getDocumentElement():获取文档元素,即获取根元素。
文档声明相关方法:
String getXmlVersion():获取文档声明的version属性值;
String getXmlEncoding():获取文档声明的encoding属性值;
String getXmlStandalone():获取文档声明的standalone属性值;
void setXmlVersion():设置文档声明version属性值;
void setXmlStandalone():设置文档声明standalone属性值。
5 Element方法介绍
获取方法:
NodeList getElementsByTagName(String tagName):获取当前元素的指定元素名称的所有子元素;
String getTagName():获取当前元素的元素名。调用元素节点的getNodeName()也是返回名;
属性相关方法:
String getAttribute(String name):获取当前元素指定属性名的属性值;
Attr getAttributeNode(String name):获取当前元素指定属性名的属性节点;
boolean hasAttribute(String name):判断当前元素是否有指定属性;
void removeAttribute(String name):移除当前元素的指定属性;
void removeAttributeNode(Attr attr):移除当前元素的指定属性;
void setAttribute(String name, String value):为当前元素添加或修改属性;
Attr setAttributeNode(Attr attr):为当前元素添加或修改属性,返回值为添加的属性;
6 Attr方法介绍
String getName():获取当前属性节点的属性名;
String getValue():获取当前属性节点的属性值;
void setValue(String value):设置当前属性节点的属性值;
boolean isId():判断当前属性节点是否为ID类型属性。
DOM练习
1 遍历元素
获取元素的所有子元素,然后循环遍历;
获取元素的第一个子元素,然后再获取子元素的下一个兄弟元素。
2 Element与JavaBean对象相互转换
把Student对象转换成Element对象;
把Element对象转换成Stduent对象。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2