Jsoup 快捷查询方式
发布日期: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 标签List
jxNodes = 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 文件中的数据,可以实现灵活的数据抽取和处理。以下是一些常见操作示例:

  • 获取所有 student 标签:
  • List
    jxNodes = jxDocument.selN("//student");for (JXNode jxNode : jxNodes) { System.out.println(jxNode);}
    1. 获取 student 标签下的 name 标签:
    2. List
      jxNodes2 = jxDocument.selN("//student/name");for (JXNode jxNode : jxNodes2) { System.out.println(jxNode);}
      1. 获取带有 id 属性的 name 标签:
      2. List
        jxNodes3 = jxDocument.selN("//student/name[@id]");for (JXNode jxNode : jxNodes3) { System.out.println(jxNode);}
        1. 获取 id 属性值为 1 的 name 标签:
        2. List
          jxNodes4 = jxDocument.selN("//student/name[@id='1']");for (JXNode jxNode : jxNodes4) { System.out.println(jxNode);}

          注意事项

          • 路径表达式:XPath 路径表达式中的 / 表示当前节点的根节点,// 表示递归查找所有子节点。
          • 属性查询:在 XPath 中,[@属性名] 用于查询属性,[@属性名='属性值'] 用于指定属性值。
          • 文本匹配::text() 用于获取元素内的文本内容。

          通过以上方法,可以轻松地在 XML 文档中定位和提取所需数据,实现灵活且高效的数据处理任务。

    上一篇:web 相关概念回顾
    下一篇:Jsoup 对象的使用

    发表评论

    最新留言

    很好
    [***.229.124.182]2025年04月27日 11时36分07秒