
Jsoup 快捷查询方式
获取所有 student 标签:
发布日期:2021-05-07 19:40:53
浏览次数:21
分类:精选文章
本文共 3261 字,大约阅读时间需要 10 分钟。
Jsoup 与 XPath 开发实践指南
1. 选择器(Selector)概述
选择器(Selector)是Jsoup库中用于查找 DOM 树中的元素的核心工具。通过选择器,我们可以基于 HTML 标签、类名、属性等条件,快速定位到指定的元素。
选择器的使用方法
Jsoup 提供了 Elements
类,通过 select(String cssQuery)
方法实现元素选择。cssQuery
参数接受一个类似于 CSS 选择器的字符串,用于描述我们要选取的元素。
public class JsoupDemo { public static void main(String[] args) throws Exception { String path = JsoupDemo.class.getClassLoader().getResource("student.xml").getPath(); // 解析 XML 文档,获取 DOM 树 Document document = Jsoup.parse(new File(path), "utf-8"); // 查询 name 标签 Elements elements = document.select("name"); // 查询 id 值为 1 的元素 Elements elements1 = document.select("#1"); // 获取 student 标签并且 id 属性为 1 的 age 子标签 Elements elements2 = document.select("student[id=\"1\"]"); Elements elements3 = document.select("student[id=\"1\"] > age"); System.out.println(elements3); }}
2. XPath 概述
XPath(XML Path Language,XML 路径语言)是一种用于在 XML 文档中定位节点的强大工具。它支持复杂的路径表达式,允许我们基于标签名、属性值和文本内容进行精确查找。
XPath 在 Jsoup 中的使用
要使用 XPath,需要导入相应的 JAR 包,并在代码中使用 XPath 表达式进行操作。以下是基本的 XPath 语法示例:
// 查询所有 student 标签// /student// 查询 student 标签下的 name 标签// /student/name// 查询 student 标签下带有 id 属性的 name 标签// /student/name[@id]// 查询 student 标签下 id 属性值为 1 的 name 标签// /student/name[@id='1']
实际操作示例
// 获取 student.xml 文件路径String path = JsoupDemo6.class.getClassLoader().getResource("student.xml").getPath();// 解析 XML 文档Document document = Jsoup.parse(new File(path), "utf-8");JXDocument jxDocument = new JXDocument(document);// 查询所有 student 标签ListjxNodes = jxDocument.selN("//student");for (JXNode jxNode : jxNodes) { System.out.println(jxNode);}// 查询 student 标签下的 name 标签List jxNodes2 = jxDocument.selN("//student/name");for (JXNode jxNode : jxNodes2) { System.out.println(jxNode);}// 查询带有 id 属性的 name 标签List jxNodes3 = jxDocument.selN("//student/name[@id]");for (JXNode jxNode : jxNodes3) { System.out.println(jxNode);}// 查询 id 属性值为 1 的 name 标签List jxNodes4 = jxDocument.selN("//student/name[@id='1']");for (JXNode jxNode : jxNodes4) { System.out.println(jxNode);}
3. 测试用例:student.xml 文件
以下是一个典型的 student.xml 文件示例:
zhang san 23 male lisi 24 female
XML 文件解析与操作
通过 XPath 查询 XML 文件中的数据,可以实现灵活的数据抽取和处理。以下是一些常见操作示例:
ListjxNodes = jxDocument.selN("//student");for (JXNode jxNode : jxNodes) { System.out.println(jxNode);}
- 获取 student 标签下的 name 标签:
- 获取带有 id 属性的 name 标签:
- 获取 id 属性值为 1 的 name 标签:
- 路径表达式:XPath 路径表达式中的
/
表示当前节点的根节点,//
表示递归查找所有子节点。 - 属性查询:在 XPath 中,
[@属性名]
用于查询属性,[@属性名='属性值']
用于指定属性值。 - 文本匹配:
::text()
用于获取元素内的文本内容。
ListjxNodes2 = jxDocument.selN("//student/name");for (JXNode jxNode : jxNodes2) { System.out.println(jxNode);}
ListjxNodes3 = jxDocument.selN("//student/name[@id]");for (JXNode jxNode : jxNodes3) { System.out.println(jxNode);}
ListjxNodes4 = jxDocument.selN("//student/name[@id='1']");for (JXNode jxNode : jxNodes4) { System.out.println(jxNode);}
注意事项
通过以上方法,可以轻松地在 XML 文档中定位和提取所需数据,实现灵活且高效的数据处理任务。