XML快捷查询方式:
student.xml
<?xml version="1.0" encoding="UTF-8" ?>
<students>
<student number="heima_0001">
<name id="itcast">
<xing>张</xing>
<ming>三</ming>
</name>
<age>100</age>
<sex>female</sex>
</student>
<student number="heima_0002">
<name>lisi</name>
<age id="sili">45</age>
<sex>female</sex>
</student>
</students>
1. selector:选择器(JsoupDemo6)
* 使用的方法是:Elements select(String cssQuery)
* 语法:参考Selector类中定义的语法
代码
/**
* 选择器查询
* document继承自ELement对象,document的返回值是ELement
*/
public class JsoupDemo6_Selector {
public static void main(String[] args) throws IOException {
//1获取student.xml的path
String path = JsoupDemo6_Selector.class.getClassLoader()
.getResource("student.xml").getPath();
//2解析xml文档,加载文档进内存,获取Document对象
Document document = Jsoup.parse(new File(path), "utf-8");
//3、查询name标签
/*
div{}
*/
Elements elements = document.select("name");
System.out.println(elements);
System.out.println("------------------------");
//4、查询id值为itcast的元素
Elements elements1 = document.select("#itcast");
System.out.println(elements1);
System.out.println("------------------------");
//5、获取student标签并且number属性值为heima_0001的age字标签
//5.1获取student标签并且number属性值为heima_0001
Elements elements2 = document.select("student[number='heima_0001']");
System.out.println(elements2);
System.out.println("------------------------");
//5.2获取student标签并且number属性值为heima_0001的age字标签
Elements elements3 = document.select("student[number='heima_0001'] age");
System.out.println(elements3);
}
}
2. Xpath:(JsoupDemo7)
* XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。
* 使用Jsoup的Xpath需要额外导入jar包。(JsoupXpath-0.3.2.jar)
查询w3cshool参考手册,使用Xpath的语法完成查询。
代码
/**
* 选择器查询
* document继承自ELement对象,document的返回值是ELement
* 导入jar包:
* JsoupXpath-0.3.2.jar
*/
public class JsoupDemo7_Xpath {
public static void main(String[] args) throws IOException, XpathSyntaxErrorException {
//1获取student.xml的path
String path = JsoupDemo7_Xpath.class.getClassLoader()
.getResource("student.xml").getPath();
//2解析xml文档,加载文档进内存,获取Document对象
Document document = Jsoup.parse(new File(path), "utf-8");
//--------------------------------------------------------------------
//3、根据document对象,创建JXDocument对象
JXDocument jxDocument = new JXDocument(document);
//4、结合Xpath的语法查询(返回所有student,不考虑位置)
//4.1查询所有student标签
List<JXNode> jxNodes = jxDocument.selN("//student");
for (JXNode jxNode : jxNodes) {//iter
System.out.println("jxNode"+":"+jxNode);
}
System.out.println("------------------------");
//4.2查询所有student标签下的name标签
List<JXNode> jxNodes1 = jxDocument.selN("//student/name");
for (JXNode jxNode : jxNodes1) {//iter
System.out.println("jxNodes1"+":"+jxNode);
}
System.out.println("------------------------");
//4.3查询student标签下带有id属性的name标签
List<JXNode> jxNodes2 = jxDocument.selN("//student/name[@id]");
for (JXNode jxNode : jxNodes2) {//iter
System.out.println("jxNodes2"+":"+jxNode);
}
System.out.println("------------------------");
//4.4查询student标签下带有id属性的name标签,并且属性值为itcast
List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id='itcast']");
for (JXNode jxNode : jxNodes3) {//iter
System.out.println("jxNodes3"+":"+jxNode);
}
}
}

409

被折叠的 条评论
为什么被折叠?



