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

java-教程王 Java教程 发布时间:2021-12-03 06:37:54 阅读数:12967 1
下文笔者将讲述使用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();
        }
    }
}
 
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaCourse/202112/1988.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者