Java之XML解析-使用dom(org.w3c.dom)解析XML

转自:

Java之XML解析-使用dom(org.w3c.dom)解析XML

下文笔者将讲述使用W3C(org.w3c.dom)提供的接口,解析XML文档的方法分享

W3C解析xml文档的方法:
  将整个xml文档读入内存,然后构建一个DOM树,然后对各节点Node进行相应的操作

Document Object简介

Document对象

Document对象:通常指整个XML的文档及其所有Node
这些节点按照一定的顺序保存在Document对象中,形成一个树形的结构
我们可以通过遍历一棵xml树,获取xml文档中所有的内容,那么这一棵树都是为Document对象

Document对象拥有以下常用方法

  1. createAttribute(String):用给定的属性名创建一个Attr对象,并可在其后使用setAttributeNode方法来放置在某一个Element对象上面。
  2. createElement(String):用给定的标签名创建一个Element对象,代表XML文档中的一个标签,然后就可以在这个Element对象上添加属性或进行其它的操作。
  3. createTextNode(String):用给定的字符串创建一个Text对象,Text对象代表了标签或者属性中所包含的纯文本字符串。如果在一个标签内没有其它的标签,那么标签内的文本所代表的Text对象是这个Element对象的唯一子对象。
  4. getElementsByTagName(String):返回一个NodeList对象,它包含了所有给定标签名字的标签。
  5. getDocumentElement():返回一个代表这个DOM树的根节点的Element对象,也就是代表XML文档根元素的那个对象。

Node对象

Node对象:代表DOM中的一个抽象节点,她是组成DOM对象的必要部分,Node对象中常见的方法如下所示:

  1. getNextSibling():返回在DOM树中这个节点的下一个兄弟节点。
  2. getPreviousSibling()方法返回其前一个兄弟节点。
  3. getNodeName():根据节点的类型返回节点的名称。
  4. getNodeType():返回节点的类型。
  5. getNodeValue():返回节点的值。
  6. hasChildNodes():判断是不是存在有子节点。
  7. hasAttributes():判断这个节点是否存在有属性。
  8. getOwnerDocument():返回节点所处的Document对象。
  9. insertBefore(org.w3c.dom.Node new,org.w3c.dom.Node ref):在给定的一个子对象前再插入一个子对象。
  10. removeChild(org.w3c.dom.Node):删除给定的子节点对象。
  11. replaceChild(org.w3c.dom.Node new,org.w3c.dom.Node old):用一个新的Node对象代替给定的子节点对象。
  12. appendChild(org.w3c.dom.Node):为这个节点添加一个子节点,并放在所有子节点的最后,如果这个子节点已经存在,则先把它删掉再添加进去。
  13. getFirstChild():如果节点存在子节点,则返回第一个子节点。
  14. getLastChild():方法返回最后一个子节点。

NodeList对象

此对象包含一个或多个Node对象,常用于检测长度及个数

  1. GetLength():返回列表的长度
  2. Item(int):返回指定位置的Node对象

Element对象

Element对象:指xml中的标签元素,继承于Node
他是Node对象的子对象,标签中包含属性,由于继承于Node,所以她也拥有Node节点中的方法
它拥有以下主要方法:

  1. getElementsByTagName(String):返回一个NodeList对象,它包含了在这个标签中其下的子孙节点中具有给定标签名字的标签。
  2. getTagName():返回一个代表这个标签名字的字符串。
  3. getAttribute(String):返回标签中给定属性名称的属性的值。在这儿需要主要的是,应为XML文档中允许有实体属性出现,而这个方法对这些实体属性并不适用。
  4. getAttributeNodes()方法来得到一个Attr对象来进行进一步的操作。
  5. 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();
        }
    }
}
 
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值