dom4j實例 的Xpath解析 轉

          books.xml:

          <?xml version="1.0" encoding="UTF-8"?>  
              
          <books>  
                  
          <!--This is a test for dom4j, jakoes, 2007.7.19-->  
                  
          <book show="yes" url="lucene.net">  
                      
          <title id="456">Lucene Studing</title>  
                  
          </book>  
                  
          <book show="yes" url="dom4j.com">  
                      
          <title id="123">Dom4j Tutorials</title>  
                  
          </book>  
                  
          <book show="no" url="spring.org">  
                      
          <title id="789">Spring in Action</title>  
                  
          </book>  
                  
          <owner>O'Reilly</owner>  
              </books> 



          public void parseBooks(){  
                   
                  SAXReader reader 
          = new SAXReader();  
                  
          try {  
                      Document doc 
          = reader.read("books.xml");  
                      Node root 
          = doc.selectSingleNode("/books");  
                      List list 
          = root.selectNodes("book[@url='dom4j.com']");  
                       
                      
          for(Object o:list){  
                           
                          Element e 
          = (Element) o;  
                          String show
          =e.attributeValue("show");  
                          System.out.println(
          "show = " + show);  
                      }  
                      
                  } 
          catch (Exception e) {  
                      e.printStackTrace();  
                  }  
              }  
          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 2012-06-14 08:56 youngturk 閱讀(1094) 評論(0)  編輯  收藏 所屬分類: 幾種文檔解析

          <2012年6月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          導航

          統計

          公告

          this year :
          1 jQuery
          2 freemarker
          3 框架結構
          4 口語英語

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          EJB學習

          Flex學習

          learn English

          oracle

          spring MVC web service

          SQL

          Struts

          生活保健

          解析文件

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 神农架林区| 东港市| 房山区| 铜鼓县| 罗平县| 天台县| 楚雄市| 五原县| 中山市| 屏山县| 铁力市| 南溪县| 易门县| 丘北县| 都安| 克山县| 南昌市| 淮阳县| 祁阳县| 遂川县| 舟山市| 临朐县| 凤台县| 巩义市| 襄垣县| 深水埗区| 汾阳市| 东莞市| 双城市| 竹北市| 宝丰县| 芒康县| 苏尼特左旗| 镇安县| 建德市| 白河县| 沽源县| 建宁县| 赤水市| 湄潭县| 布拖县|