數據加載中……
          [轉]dom4j實例

          dom4j實例

          http://haiyupeter.javaeye.com/blog/306572

          關鍵字: dom4j實例

           國外的dom4j已經很流行了,國內的相關資料相對較少,但普及風暴也即將到來。我們公司(老外開的)解析XML就是用的dom4j。
            今天公司沒事做,自己也寫一個小例子貼上來,嘻~~
           
          books.xml:

          Xml代碼 復制代碼
          1. <?xml version="1.0" encoding="UTF-8"?>  
          2. <books>  
          3.     <!--This is a test for dom4j, jakoes, 2007.7.19-->  
          4.     <book show="yes" url="lucene.net">  
          5.         <title id="456">Lucene Studing</title>  
          6.     </book>  
          7.     <book show="yes" url="dom4j.com">  
          8.         <title id="123">Dom4j Tutorials</title>  
          9.     </book>  
          10.     <book show="no" url="spring.org">  
          11.         <title id="789">Spring in Action</title>  
          12.     </book>  
          13.     <owner>O'Reilly</owner>  
          14. </books>  
           



          下面我們使用dom4j的xPath來解析:

          segment of ParseXML.java:

          Java代碼 復制代碼
          1. public void parseBooks(){   
          2.       
          3.     SAXReader reader = new SAXReader();   
          4.     try {   
          5.         Document doc = reader.read("books.xml");   
          6.         Node root = doc.selectSingleNode("/books");   
          7.         List list = root.selectNodes("book[@url='dom4j.com']");   
          8.           
          9.         for(Object o:list){   
          10.               
          11.             Element e = (Element) o;   
          12.             String show=e.attributeValue("show");   
          13.             System.out.println("show = " + show);   
          14.         }   
          15.          
          16.     } catch (Exception e) {   
          17.         e.printStackTrace();   
          18.     }   
          19. }  
           


            Document doc = reader.read("books.xml");的意思是加載XML文檔,此是可以用doc.asXML()來查看,它將打印整個xml文檔。

            Node root = doc.selectSingleNode("/books");是讀取剛才加載的xml文檔內的books節點下的所有內容,對于本例也是整個xml文檔。
            當然我們也可以加載/books下的某一個節點,如:book節點
          Node root = doc.selectSingleNode("/books/book");
          或:Node root = doc.selectSingleNode("/books/*");
          注意:如果有多個book節點,它只會讀取第一個
          root.asXML()將打印:
          <book show="yes" url="lucene.net">
                  <title id="456">Lucene Studing</title>
          </book>

            既然加載了這么多,那我怎么精確的得到我想要的節點呢,別急,看下面:
          List list = root.selectNodes("book[@url='dom4j.com']");
          它的意思就是讀取books節點下的book節點,且book的節點的url屬性為dom4j.com
          為什么使用list來接收呢,如果有兩個book節點,且它們的url屬性都為dom4j.com,此時就封閉到list里了。

            如果想讀取books下的所有book節點,可以這樣:
          List list = root.selectNodes("book");

            如果想讀取books節點下的book節點下的title節點,可以這樣:
          List list2 = root.selectNodes("book[@url='dom4j.com']/title[@id='123']");

            注意:selectNodes()參數的格式:
            節點名[@屬性名='屬性值'],如:book[@url='dom4j.com']
            如果有多個節點,用“/”分開,如:book[@url='dom4j.com']/title[@id='123']

            最近就是讀取封閉在List里的內容了,可以用Node來讀取,也可以用Element來轉換。
          attributeValue("屬性")是讀取該節點的屬性值
          getText()是讀取節點的的內容。



          ---------------------------------------------------------------------------------------
          ——使你疲勞的不是遠方的高山,而是你鞋里一粒沙子!

          posted on 2009-05-06 09:30 鋒行 閱讀(858) 評論(0)  編輯  收藏 所屬分類: XML


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 汪清县| 永寿县| 临邑县| 石城县| 商南县| 阳江市| 靖江市| 忻州市| 行唐县| 吐鲁番市| 奉新县| 根河市| 延庆县| 定远县| 诸暨市| 连江县| 克什克腾旗| 雷波县| 石嘴山市| 道真| 台湾省| 垫江县| 桂阳县| 沁阳市| 靖江市| 周至县| 绩溪县| 明星| 车致| 汤阴县| 台中市| 岳阳市| 赣榆县| 六枝特区| 繁昌县| 新兴县| 台南市| 怀来县| 濮阳县| 蓝山县| 绥宁县|