• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 通過DOM4J解析XML

    Dom4j是一個簡單、靈活的開放源代碼的庫。Dom4j是由早期開發JDOM的人分離出來而后獨立開發的。與JDOM不同的是,dom4j使用接口和抽象基類,雖然Dom4j的API相對要復雜一些,但它提供了比JDOM更好的靈活性。 Dom4j是一個非常優秀的Java XML API,具有性能優異、功能強大和極易使用的特點。現在很多軟件采用的Dom4j,例如Hibernate,包括sun公司自己的JAXM也用了Dom4j。 使用Dom4j開發,需下載dom4j相應的jar文件。

    dom4j有如下一些特征:

    1. JDOM的一種智能分支,它合并了許多超出基本XML文檔表示的功能。
    2. 它使用接口和抽象基本類方法。
    3. 具有性能優異、靈活性好、功能強大和極端易用的特點。
    4. 是一個開放源碼的文件

    1.要導入dom4j包才能使用dom4j解析xml
    這里寫圖片描述

    2.創建一個xml文件
    代碼如下:

    <?xml version='1.0' encoding='UTF-8' ?>
    <root>
    <hang>
    <產品唯一ID>aab產品唯一ID</產品唯一ID>
    <通用名>aa通用名</通用名>
    <商品名>aa商品名</商品名>
    <劑型>aa劑型</劑型>
    <批準文號>aa批準文號</批準文號>
    <規格>aa規格</規格>
    <包裝說明>aa包裝說明</包裝說明>
    <包裝單位>aa包裝單位</包裝單位>
    <生產企業>aa生產企業</生產企業>
    <大包裝轉換比>aa大包裝轉換比</大包裝轉換比>
    <中包裝轉換比>aa中包裝轉換比</中包裝轉換比>
    <備注>aa備注</備注>
    <庫存>aa庫存</庫存>
    <供應價>aa供應價</供應價>
    <是否上架>aa是否上架</是否上架>
    </hang>
    <hang>
    <產品唯一ID>a121</產品唯一ID>
    <通用名>b12</通用名>
    <商品名>c231</商品名>
    <劑型>dewrwer</劑型>
    <批準文號>e324324</批準文號>
    <規格>f45645</規格>
    <包裝說明>g4543</包裝說明>
    <包裝單位>hq324e2</包裝單位>
    <生產企業>i76</生產企業>
    <大包裝轉換比>j453</大包裝轉換比>
    <中包裝轉換比>k4r43r</中包裝轉換比>
    <備注>le4tr4</備注>
    <庫存>mq3e2</庫存>
    <供應價>nefrw</供應價>
    <是否上架>o56</是否上架>
    </hang>
    </root>
    

    注:xml文件要要用ie瀏覽器打開驗證一下,編碼是否正確,如下圖所示。
    這里寫圖片描述

    2.編寫java代碼解析xml
    源代碼如下:

    import java.io.File;
    import java.util.Iterator;
    import java.util.List;
    
    import org.dom4j.Attribute;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    /**
     * DOM4J 方式解析XML
     */
    public class DOM4JTest {
    
        public static void main(String[] args) {
            // 解析123.xml文件        
            SAXReader reader = new SAXReader();// 創建SAXReader的對象reader
            try {            
                Document document = reader.read(new File("F://123.xml"));// 通過reader對象的read方法加載books.xml文件,獲取docuemnt對象。            
                Element bookStore = document.getRootElement();// 通過document對象獲取根節點bookstore            
                Iterator it = bookStore.elementIterator();// 通過element對象的elementIterator方法獲取迭代器
                // 遍歷迭代器,獲取根節點中的信息(產品)
                while (it.hasNext()) {
                 System.out.println("=====開始遍歷某一個產品=====");
                 Element book = (Element) it.next();            
                 List<Attribute> bookAttrs = book.attributes(); // 獲取book的屬性名以及 屬性值
                 for (Attribute attr : bookAttrs) {
                  System.out.println("屬性名:" + attr.getName() + "--屬性值:" + attr.getValue());
                 }
                 //解析子節點的信息
                 Iterator itt = book.elementIterator();
                 while (itt.hasNext()) {
                  Element bookChild = (Element) itt.next();
                  System.out.println("節點名:" + bookChild.getName() + "--節點值:" + bookChild.getStringValue());
                 }
                 System.out.println("=====結束遍歷某一個產品=====");
                }
    
            } catch (DocumentException e) {
                e.printStackTrace();
            }
        }
    
    }
    

    運行結果如下:

    =====開始遍歷某一個產品=====
    節點名:產品唯一ID--節點值:aab產品唯一ID
    節點名:通用名--節點值:aa通用名
    節點名:商品名--節點值:aa商品名
    節點名:劑型--節點值:aa劑型
    節點名:批準文號--節點值:aa批準文號
    節點名:規格--節點值:aa規格
    節點名:包裝說明--節點值:aa包裝說明
    節點名:包裝單位--節點值:aa包裝單位
    節點名:生產企業--節點值:aa生產企業
    節點名:大包裝轉換比--節點值:aa大包裝轉換比
    節點名:中包裝轉換比--節點值:aa中包裝轉換比
    節點名:備注--節點值:aa備注
    節點名:庫存--節點值:aa庫存
    節點名:供應價--節點值:aa供應價
    節點名:是否上架--節點值:aa是否上架
    =====結束遍歷某一個產品=====
    =====開始遍歷某一個產品=====
    節點名:產品唯一ID--節點值:a121
    節點名:通用名--節點值:b12
    節點名:商品名--節點值:c231
    節點名:劑型--節點值:dewrwer
    節點名:批準文號--節點值:e324324
    節點名:規格--節點值:f45645
    節點名:包裝說明--節點值:g4543
    節點名:包裝單位--節點值:hq324e2
    節點名:生產企業--節點值:i76
    節點名:大包裝轉換比--節點值:j453
    節點名:中包裝轉換比--節點值:k4r43r
    節點名:備注--節點值:le4tr4
    節點名:庫存--節點值:mq3e2
    節點名:供應價--節點值:nefrw
    節點名:是否上架--節點值:o56
    =====結束遍歷某一個產品=====
    

    這里寫圖片描述

    版權聲明:本文為qq_41182503原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/qq_41182503/article/details/79989997

    智能推薦

    XML解析之dom4j

    使用dom4j解析xml dom4j是一個組織,針對xml解析,提供了解析器dom4j 導入dom4j的jar包 創建一個文件夾lib 把jar包復制到lib下 右鍵點擊jar包,選擇添加到path 看到jar包變成奶瓶的形狀就可以了 常用的類: SAXReader類 使用這個 類創建一個解析器 new SAXReader() Document read(String systemId) 使用這個...

    使用DOM4J解析XML

    使用DOM4J解析XML DOM4J同時具備了DOM寫入和SAX讀取的操作,并做了存儲優化,使用DOM4J時要導入dom4j的開發包dom4j-x.x.x.jar。 DOM4J提供有自己的一堆實現類庫: DocumentHelper工具類:org.dom4j.DocumentHelper No 返回值 方法名 描述 1 Document createDocument() 創建新的文檔 2 Elem...

    dom4j解析xml

    一.什么是XML xml:extensive markup language 可擴展的標記語言。如下,就是xml 二.如何解析xml 這邊我使用dom4j解析 1.將dom4j和jaxen架包導進項目 第一步:找到這個標志,并且點擊 第二步: 第三步:選擇jar包 然后點擊apply再點確認jar包就導入完成。 2.建一個類和xml中內容對應 3.寫一個轉換的類 4.最后測試一下...

    DOM4J解析XML

    被解析的XML文件 解析類 解析結果...

    dom4j解析.xml文件

    xml 是可擴展的標記性語言。xml 的主要作用有: 1、用來保存數據,而且這些數據具有自我描述性 2、它還可以做為項目或者模塊的配置文件 3、還可以做為網絡傳輸數據的格式(現在 JSON 為主)。 CDATA 語法可以告訴 xml 解析器,我 CDATA 里的文本內容,只是純文本,不需要 xml 語法解析 CDATA 格式: <![CDATA[ 這里可以把你輸入的字符原樣顯示,不會解析 x...

    猜你喜歡

    XML解析(Dom4j)

    Dom(文檔對象模型(Document Object Model)) ——————————JAVA—————————— 下面舉個例子詳細說明:用Dom4j解析p...

    dom4j解析xml

     新建java 工程,然后新建lib文件夾,將dom4j的jar包和dtd約束拷貝進來, 然后在src下添加web.xml,添加過程中選擇約束   新建java 類 web.xml   ...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    精品国产乱码久久久久久蜜桃不卡