Document樹的解析方法

來源:互聯網
上載者:User

標籤:

一、本次總結用到的xml文本

    1、    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
        <!-- 引進dtd檔案的標籤 --><!-- <!DOCTYPE 書架 SYSTEM "book.dtd"> -->
        <書架>
            <書 ISBN="a" 出版社="人民出版社">
                <書名>三國演義</書名>
                <作者>羅貫中</作者>
                <批發價>500¥</批發價>
                <售價>100$</售價>
            </書>
            <書 ISBN="b" 出版社="人民出版社">
                <書名>西遊記</書名>
                <作者>吳承恩</作者>
                <售價>55¥</售價>
            </書>
        </書架>
二、利用jaxp進行DOM的解析方法
    1、首先獲得解析工廠DOcumentBuilderFactory
        javax.xml.parsers 類
        
        **DocumentBuilderFactory:定義工廠API,使應用程式能夠從xml文檔擷取產生DOM對象的解析器。

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        
        **newInstance()方法:擷取DocumentBuilderFactory的新實類。此static方法建立一個新的工廠實類。
    2、得到解析器DocumentBuilder
        類 DocumentBuilder
        **定義API,使其從xml文檔中DOM文檔實類。應用程式員可以從xml擷取一個Document
        
        DocumentBuilder builder = factory.newDocumentBuilder();
        
        **newDocumentBuilder:使用當前配置的參數建立一個新的DocumentBuilder實類。
        
    3、解析制定的xml文檔。得到代表記憶體的Dom樹的Document對象
        
        Document document = builder.parse("src/book.xml");
        **builder.parse()方法:將給定輸入源的內容解析為一個xml文檔。並返回一個新的DOM document對象

三、得到某個具體節點的內容:列如:列印第二本書的作者
    1、根據標籤的內容擷取所有的作者名稱
        NodeList nodelist=document.getElementsBytagName()
        NodeList:介面提供對節點的有序集合的抽象
    2、按照索引擷取第二個作者元素
        Node node=nodelist.item(1);
    3、列印該元素的文本
        String text=node.getTextContent();
        System.out.println(text);
四、遍曆所有的元素節點:列印元素的節點名稱
    1、判斷當前節點是否為一個元素節點
        short nd=node.getNodeType();
        if(nd==Node.ELEMENT_NODE){
        如果是:列印元素節點的名稱
        system.out.println(node.getNodeName());
        }
        如果不是找到他們的孩子節點
        NodeList nodelist=node.getChildNodes();
        int length=nodelist.getLength();//擷取孩子節點的長度
        for(int 1=0;i<length;i++){
        //遍曆孩子節點進行遞迴
        Node n=nodelist.item(i);
        test2(n);
        }
五、修改元素節點的主題內容
    1、列如:找到第一本書的售價
        NodeList nodelist = docuement.getElementsByTagName("售價");
    2、設定其主題內容
        Node no=nodelist.item(0);//得到他的節點
        no.setTextContent("100$");//設定他的主題內容
    3、把記憶體中的document樹寫回到xml中
        TransformerFactory  factory = TransformerTactory.newInstance();
        Transformer tr = factory.newTransformer();
        tr.transformer(new DOMSource(doument),new StreamResult("src/book.xml"));
六、向指定元素節點中增加子項目節點
    1、建立一個新元素並設定其內容
        Element element = Element.createElement("內部價");
        設定他的常值內容
        element.setTexstContent("300$");
    2、找到第一本書
        NodeList nodelist = document.getElementsByTagName("書");
        Node first =nodelist.item(0);
    3、把新節點掛到第一本書上
        first.appendChild(element)
    4、把記憶體中的document樹寫會到xml中
        TransformerFactory factory = TransformerFactory.newInstace();
        Transformer tr=factory.newTransformer();
        tr.transformer(new DOMSource(document),new StreamResult("src/book.xml"));
七、向指定的元素節點上增加同級元素節點:列如:在第一本書的售價前面添加批發價
    1、建立並設定其主題內容
        Element element = documcnet.createElement("批發價");
        element.setTextContent("500$");
    2、找到第一本書的售價
        NodeList nodelist = document.getElementsByTagName("售價");
        Node node=nodelist.item(0);
     3、在售價的前面添加建立的元素:
        ***增加子節點,一定要使用父元素進行
        node.getParentNode().insertBefore(element,node);
    4、把記憶體中的document樹寫回到xml中
        TransformerFactory factory = TransformerFactory.newInstance();
        Transformer tr = factory.newTransformer()
        tr.transformer(new DOMSource(document),new StreamResult("src/book.xml"));
八、刪除指定元素的節點
    1、刪除子節點需要父節點進行刪除
        列如:找到內部價進行刪除
        NodeList nodelist = document.getElementsByTagName("內部價");
         Node node = nodelist.item(0);
         node.getPraentNode().removeChhild(n);
    2、把記憶體的document樹寫回到xml中
        TransformerFactory factory=TransformerFactory.newInstance();
        Transformer tr=factory.Transformer();
        tr.transformer(new DOMSource(document),new StreamResult("src/book.xml"));
九、操作xml元素屬性:列印第一本書的出版社
    1、首先得到第一本
        Node node = document.getElementsByTagName("書").item(0);
    2、列印指定屬性的值
        Element e = (Element)n;
        system.out.println(e.getAttribute("出版社"));











Document樹的解析方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.