快捷查询方式:
1. selector:选择器
* 使用的方法:Elements select(String cssQuery)
* 语法:参考Selector类中定义的语法
2. XPath:XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言
* 使用Jsoup的Xpath需要额外导入jar包。
* 查询w3cshool参考手册,使用xpath的语法完成查询
student.xml文档
<?xml version="1.0" encoding="UTF-8" ?>
<students>
<student number="heima_0001">
<name id="only">
<xing>张</xing>
<ming>si</ming>
</name>
<age>18</age>
<sex>male</sex>
</student>
<student number="heima_0002">
<name>jessy</name>
<age>18</age>
<sex>female</sex>
</student>
</students>
1. selector:选择器
public static void main(String[] args) throws IOException {
//根据xml文档获取 Document对象
//获取student.xml的路径
String path = Jsoup05.class.getClassLoader().getResource("student.xml").getPath();
//解析xml文档 加载文档进内存 获取dom树
Document document = Jsoup.parse(new File(path), "utf-8");
Elements elements1 = document.select("#only");
System.out.println(elements1);
System.out.println("-------------");
//获取student标签下的number属性为heima_0001的标签
Elements elements2 = document.select("student[number=\"heima_0001\"]");
System.out.println(elements2);
System.out.println("-------------");
//获取student标签下的number属性为heima_0001的age子标签
Elements elements3 = document.select("student[number=\"heima_0001\"]>age");
System.out.println(elements3);
}
2. XPath
public static void main(String[] args) throws IOException, XpathSyntaxErrorException {
//根据xml文档获取 Document对象
//获取student.xml的路径
String path = Jsoup06_xpath.class.getClassLoader().getResource("student.xml").getPath();
//解析xml文档 加载文档进内存 获取dom树
Document document = Jsoup.parse(new File(path), "utf-8");
//根据Document对象,创建jxDocument对象
JXDocument jxDocument = new JXDocument(document);
//结合Xpath语法查询
List<JXNode> jxNodes = jxDocument.selN("//student");
for (JXNode jxNode : jxNodes) { //快捷键iter
System.out.println(jxNode);
}
System.out.println("--------");
//查询student下的name标签
List<JXNode> jxNodes1 = jxDocument.selN("//student/name");
for (JXNode jxNode : jxNodes1) { //快捷键iter
System.out.println(jxNode);
}
System.out.println("--------");
//查询student下的name带id属性的标签
List<JXNode> jxNodes2 = jxDocument.selN("//student/name[@id]");
for (JXNode jxNode : jxNodes2) { //快捷键iter
System.out.println(jxNode);
}
//查询student下的name带id属性且属性值为only的标签
List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id='itcast']");
for (JXNode jxNode : jxNodes3) { //快捷键iter
System.out.println(jxNode);
}
}