xml_解析_Jsoup_根據選擇器查詢以及根據Xpath查詢
阿新 • • 發佈:2022-11-29
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("--------------------"); } }