• 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
      
    
      324
      
           
                a.jsp
                b.jsp
                c.jsp
                d.jsp
            
            
                e.jsp
                f.jsp
            
      
    
    
    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();
            }
        }
    }
     
  • 相关阅读:
    【SQL】各主流数据库sql拓展语言(T-SQL 、 PL/SQL、PL/PGSQL)
    会务转化如何取得“数字化”突破?会务营销数字化功能推荐
    10. python float( )函数
    图解字符串匹配算法:从Brute-Force到KMP,一下子就整明白了
    Vue3+vite中引入Echarts图表
    数据结构之队列(源代码➕图解➕习题)
    AIGC 时代,Amazon DeepRacer 带你驶入机器学习的快车道
    JAVA中变量与常量
    python动态属性的应用场景
    【使用python绘制统计图表】
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/126192758