posts - 15,  comments - 8,  trackbacks - 0
          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>

          下面我們使用dom4j的xPath來解析:
          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();   
                  }   
              }  

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

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

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

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

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

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

          selectNodes(Object context, XPath sortXPath)第二個參數(shù)用來設(shè)置排序的屬性名
          如:List list = root.selectNodes("book/title","@id");
          這樣則會根據(jù)title節(jié)點的id屬性排序
          posted on 2009-05-18 23:45 lvq810 閱讀(537) 評論(0)  編輯  收藏 所屬分類: Open Framekwork
          主站蜘蛛池模板: 常德市| 昭苏县| 桃园县| 监利县| 绥宁县| 嘉峪关市| 余江县| 晋中市| 怀宁县| 额敏县| 彰化市| 历史| 南安市| 新野县| 吉安县| 漠河县| 台州市| 平山县| 准格尔旗| 江华| 昭平县| 嘉黎县| 松阳县| 哈密市| 新源县| 洪泽县| 洛隆县| 巴林左旗| 和静县| 太和县| 甘德县| 黄山市| 泗水县| 宁河县| 陆良县| 安塞县| 清涧县| 临夏县| 尼勒克县| 淮安市| 唐河县|