簡單用DOM4J結合XPATH解析XML


由於DOM4J在解析XML時只能一層一層解析,所以當XML文件層數過多時使用會很不方便,結合XPATH就可以直接獲取到某個元素

使用dom4j支持xpath的操作的幾種主要形式

     第一種形式
            /AAA/DDD/BBB: 表示一層一層的,AAA下面 DDD下面的BBB
       第二種形式
            //BBB: 表示和這個名稱相同,表示只要名稱是BBB,都得到
         第三種形式
            /*: 所有元素
         第四種形式
           BBB[1]: 表示第一個BBB元素
             BBB[last()]:表示最后一個BBB元素
         第五種形式
            //BBB[@id]: 表示只要BBB元素上面有id屬性,都得到
         第六種形式
            //BBB[@id='b1'] 表示元素名稱是BBB,在BBB上面有id屬性,並且id的屬性值是b1

使用dom4j支持xpath具體操作
         默認的情況下,dom4j不支持xpath,如果想要在dom4j里面是有xpath,第一步需要,引入支持xpath的jar包,如下:

       
         在dom4j里面提供了兩個方法,用來支持xpath
           selectNodes("xpath表達式"),獲取多個節點
       selectSingleNode("xpath表達式"),獲取一個節點

應用簡單案例:

1.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<class> 
  <student> 
    <name>張三</name>  
    <sid>111111</sid> 
  </student>  
  <student id="stu1"> 
    <name>李四</name>  
    <sid>222222</sid> 
  </student> 
</class>

Java代碼

import java.util.List;
import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class Dom4jXpath {

    public static void main(String[] args) throws Exception {
        select();//查詢所有name的值
        //select2();//查詢id=stu1的學生的name的值
    }
    //查詢所有name的值
    private static void select() throws Exception {
        SAXReader saxReader=new SAXReader();
        Document document=saxReader.read("src/1.xml");
        List<Node>list=document.selectNodes("//name");
        for(int i=0;i<list.size();i++)
            System.out.println(list.get(i).getText());
    }
    //查詢id=stu1的學生的name的值
    private static void select2() throws Exception {
        SAXReader saxReader=new SAXReader();
        Document document=saxReader.read("src/1.xml");
        Node node=document.selectSingleNode("//student[@id='stu1']/name");
        System.out.println(node.getText());
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM