Xpath语言:
XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。
XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。
-
使用步骤
-
导入Jsoup_Xpath-0.3.2.jar包,不用说了吧
-
创建Xpath对象,根据document对象创建
public JXDocument JXDocument(Document document)
-
结合Xpath语法查询
public List JXDocument 对象.selN(“XPath语法”)
-
-
代码如下:
import cn.wanghaomiao.xpath.exception.XpathSyntaxErrorException; import cn.wanghaomiao.xpath.model.JXDocument; import cn.wanghaomiao.xpath.model.JXNode; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import java.io.File; import java.io.IOException; import java.util.List; /** * 依据Xpath语言解析XML文档 */ public class JsoupXpathParse { public static void main(String[] args) throws IOException, XpathSyntaxErrorException { //加载XML文档 String path = JsoupXpathParse.class.getClassLoader().getResource("student.xml").getPath(); Document document = Jsoup.parse(new File(path), "utf-8"); //根据document对象创建出JXDocument对象 JXDocument jxDocument = new JXDocument(document); //查询出所有的student元素 List<JXNode> jxNodes = jxDocument.selN("//student"); for (JXNode jxNode : jxNodes) { System.out.println(jxNode); System.out.println("-----------------"); } //查询出有id属性的元素,不论是什么元素名都行 List<JXNode> jxNodes1 = jxDocument.selN("//*[@id]"); for (JXNode jxNode : jxNodes1) { System.out.println(jxNode); System.out.println("-----------------"); } //查询出student标签下的name标签,并且是id属性为1002的 List<JXNode> jxNodes2 = jxDocument.selN("//student/name[@id='1002']"); for (JXNode jxNode : jxNodes2) { System.out.println(jxNode); System.out.println("-----------------"); } } }
结果如下:
<student>
<name id="1001">
远
</name>
<age>
21
</age>
<sex>
男
</sex>
</student>
-----------------
<student>
<name id="1002">
悦
</name>
<age>
20
</age>
<sex id="1">
女
</sex>
</student>
-----------------
<name id="1001">
远
</name>
-----------------
<name id="1002">
悦
</name>
-----------------
<sex id="1">
女
</sex>
-----------------
<name id="1002">
悦
</name>
-----------------
Process finished with exit code 0
使用的XML文件内容为:
<?xml version="1.0" encoding="UTF-8"?>
<!--<?xml-stylesheet type="text/css" href="a.css" ?>-->
<students>
<student>
<name id="1001">远</name>
<age>21</age>
<sex>男</sex>
</student>
<student>
<name id="1002">悦</name>
<age>20</age>
<sex id="1">女</sex>
</student>
</students>