Java之XML解析-使用dom(org.w3c.dom)解析XML
下文笔者将讲述使用W3C(org.w3c.dom)提供的接口,解析XML文档的方法分享
这些节点按照一定的顺序保存在Document对象中,形成一个树形的结构
我们可以通过遍历一棵xml树,获取xml文档中所有的内容,那么这一棵树都是为Document对象
他是Node对象的子对象,标签中包含属性,由于继承于Node,所以她也拥有Node节点中的方法
它拥有以下主要方法:
W3C解析xml文档的方法: 将整个xml文档读入内存,然后构建一个DOM树,然后对各节点Node进行相应的操作
Document Object简介
Document对象
Document对象:通常指整个XML的文档及其所有Node这些节点按照一定的顺序保存在Document对象中,形成一个树形的结构
我们可以通过遍历一棵xml树,获取xml文档中所有的内容,那么这一棵树都是为Document对象
Document对象拥有以下常用方法
- createAttribute(String):用给定的属性名创建一个Attr对象,并可在其后使用setAttributeNode方法来放置在某一个Element对象上面。
- createElement(String):用给定的标签名创建一个Element对象,代表XML文档中的一个标签,然后就可以在这个Element对象上添加属性或进行其它的操作。
- createTextNode(String):用给定的字符串创建一个Text对象,Text对象代表了标签或者属性中所包含的纯文本字符串。如果在一个标签内没有其它的标签,那么标签内的文本所代表的Text对象是这个Element对象的唯一子对象。
- getElementsByTagName(String):返回一个Nodelist对象,它包含了所有给定标签名字的标签。
- getDocumentElement():返回一个代表这个DOM树的根节点的Element对象,也就是代表XML文档根元素的那个对象。
Node对象
Node对象:代表DOM中的一个抽象节点,她是组成DOM对象的必要部分,Node对象中常见的方法如下所示:- getNextSibling():返回在DOM树中这个节点的下一个兄弟节点。
- getPreviousSibling()方法返回其前一个兄弟节点。
- getNodeName():根据节点的类型返回节点的名称。
- getNodeType():返回节点的类型。
- getNodeValue():返回节点的值。
- hasChildNodes():判断是不是存在有子节点。
- hasAttributes():判断这个节点是否存在有属性。
- getOwnerDocument():返回节点所处的Document对象。
- insertBefore(org.w3c.dom.Node new,org.w3c.dom.Node ref):在给定的一个子对象前再插入一个子对象。
- removeChild(org.w3c.dom.Node):删除给定的子节点对象。
- replaceChild(org.w3c.dom.Node new,org.w3c.dom.Node old):用一个新的Node对象代替给定的子节点对象。
- appendChild(org.w3c.dom.Node):为这个节点添加一个子节点,并放在所有子节点的最后,如果这个子节点已经存在,则先把它删掉再添加进去。
- getFirstChild():如果节点存在子节点,则返回第一个子节点。
- getLastChild():方法返回最后一个子节点。
NodeList对象
此对象包含一个或多个Node对象,常用于检测长度及个数- GetLength():返回列表的长度
- Item(int):返回指定位置的Node对象
Element对象
Element对象:指xml中的标签元素,继承于Node他是Node对象的子对象,标签中包含属性,由于继承于Node,所以她也拥有Node节点中的方法
它拥有以下主要方法:
- getElementsByTagName(String):返回一个NodeList对象,它包含了在这个标签中其下的子孙节点中具有给定标签名字的标签。
- getTagName():返回一个代表这个标签名字的字符串。
- getAttribute(String):返回标签中给定属性名称的属性的值。在这儿需要主要的是,应为XML文档中允许有实体属性出现,而这个方法对这些实体属性并不适用。
- getAttributeNodes()方法来得到一个Attr对象来进行进一步的操作。
- getAttributeNode(String):返回一个代表给定属性名称的Attr对象。
Attr对象
Attr对象所代表的含义为:标签中的属性,她继承于Node,她只是作为Element对象的一部分,但是不作为树的单独节点java 之Dom解析XML的步骤如下所示: 1. 获取DocumentBuilderFactory 2. 通过DocumentBuilder工厂产生一个DocumentBuilder 3. 利用DocumentBuilder产生Document例:
testXml.xml <?xml version="1.0" encoding="UTF-8"?> <struts> <constant name="struts.i18n.encoding" value="gb2312">324</constant> <package name="stuts2" extends="struts-default"> <action name="A" > <result name="s">a.jsp</result> <result name="t">b.jsp</result> <result name="m">c.jsp</result> <result name="fail">d.jsp</result> </action> <action name="B" > <result name="success">e.jsp</result> <result name="fail">f.jsp</result> </action> </package> </struts> public class TestClass { public static void main(String[] args) { try { File f = new File("testXml.xml"); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//步骤1 DocumentBuilder builder = factory.newDocumentBuilder();//步骤2 Document doc = builder.parse(f);//步骤3 NodeList nl = doc.getElementsByTagName("action"); for (int i = 0; i < nl.getLength(); i++) { System.out.println("result:"+ doc.getElementsByTagName("result") .item(i).getFirstChild().getNodeValue()); } } catch (Exception e) { e.printStackTrace(); } } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。