1. 程式人生 > 其它 >xml_解析_Jsoup_根據選擇器查詢以及根據Xpath查詢

xml_解析_Jsoup_根據選擇器查詢以及根據Xpath查詢

xml_解析_Jsoup_根據選擇器查詢

快捷查詢方式:

  selector:選擇器

    使用的方法:Element: select(String  cssQuery)

      語法:參考Selector類中定義的語法

public class JsoupDemo5 {
    public static void main(String[] args) throws IOException {
        //1.獲取student.xml的path
        String path = JsoupDemo5.class.getClassLoader().getResource("student.xml").getPath();
        
//2.獲取Document物件 Document document = Jsoup.parse(new File(path), "utf-8"); //Elements select(String cssQuery); //查詢name標籤 Elements name = document.select("name"); System.out.println(name); System.out.println("------------------"); //查詢id值為1的元素 Elements select = document.select("#1"); System.out.println(select); System.out.println(
"------------------"); //獲取student標籤並且number屬性值為aaa_0001的age子標籤 //獲取student標籤並且number屬性值為aaa_0001 Elements select1 = document.select("student[number='aaa_0001']"); System.out.println(select1); System.out.println("------------------"); //獲取student標籤並且number屬性值為aaa_0001的age子標籤
Elements age = select1.select("student[number='aaa_0001']>age"); System.out.println(age); } }

xml_解析_Jsoup_根據Xpath查詢

  XPath:XPath即為XML路徑語言(XML Path Language),它是一種用來確定XML文件中某部分位置的語言

    使用Jsoup的Xpath需要額外匯入jar包:JsoupXpath-0.3.2.jar  

    查詢w3cschool參考手冊,使用xpath的語法完成查詢

public class JsoupDemo6 {
    public static void main(String[] args) throws IOException, XpathSyntaxErrorException {
        //1.獲取student.xml的path
        String path = JsoupDemo6.class.getClassLoader().getResource("student.xml").getPath();
        //2.獲取Document物件
        Document document = Jsoup.parse(new File(path), "utf-8");
        /**
         * 根據Xpath查詢
         */
        //根據Document物件建立JXDocument物件
        JXDocument jxDocument = new JXDocument(document);
        //結合Xpath語法查詢
        //查詢所有的student標籤
        List<JXNode> jxNodes = jxDocument.selN("//student");
        for (JXNode jxNode : jxNodes) {
            System.out.println(jxNode);
        }
        System.out.println("--------------------");
        //查詢所有的student標籤下的name標籤
        List<JXNode> jxNodes1 = jxDocument.selN("//student/name");
        for (JXNode jxNode : jxNodes1) {
            System.out.println(jxNode);
        }
        System.out.println("--------------------");
        //查詢所有的student標籤下帶有id屬性的name標籤
        List<JXNode> jxNodes2 = jxDocument.selN("//student/name[@id]");
        for (JXNode jxNode : jxNodes2) {
            System.out.println(jxNode);
        }
        System.out.println("--------------------");
        //查詢所有的student標籤下帶有id屬性的name標籤標籤id屬性值為1
        List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id='1']");
        for (JXNode jxNode : jxNodes3) {
            System.out.println(jxNode);
        }
        System.out.println("--------------------");
    }
}