xml解析--Jsoup快捷查询方式

本文介绍Jsoup的selector和XPath语法在XML解析中的应用,通过实例展示了如何快速定位并获取XML文档中的特定元素。从选择器查询到XPath路径语言,详细解释了两种查询方式的特点和使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

xml解析--Jsoup快捷查询方式

在这里插入图片描述

引入

以前当我们想获取<student> -> <name>  ->   <xing> -> "张"
时,我们需要先依次获取对应的标签。在获取内容
   我们希望有一种快捷的方式,一下子就能定位到这里。
   因此就有了快捷查询方式。

快捷查询方式

selector

选择器查询
  使用方法:Elements select(String cssQuery) 

selector语法

参考selector中定义的语法

package com.xml.jsoup;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.File;


/**
 * @author OldAZ-PC
 * 选择器查询
 */
public class JsoupDemo5 {
    public static void main(String[] args) throws Exception {
        //1 获取student。xml的路径
        String path = JsoupDemo2.class.getResource("student.xml").getPath();
        //2.获取Document对象
        Document document = Jsoup.parse(new File(path), "utf-8");
        //3.查询name标签
        Elements elements = document.select("name");
        System.out.println(elements);
        System.out.println("---------------");
        //4.查询id值为id01的元素
        Elements elements1 = document.select("#id01");
        System.out.println(elements1);
        System.out.println("---------------");
        //5.获取student标签并且number属性值为xml_0001的age子标签
          //5.1获取student标签并且number属性为xml_0001
        Elements elements2 = document.select("student[number='xml_0001']");
        System.out.println(elements2);
        System.out.println("---------------");
          //5.2获取student标签并且number属性值为xml_0001的age子标签
        Elements elements3 = document.select("student[number='xml_0001']>age");
        System.out.println(elements3);


    }
}

XPath

w3c定义的一种语法

 XPath即为XML路径语言(XML Path Language),
 它是一种用来确定XML文档中某部分位置的语言。
XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。
起初XPath的提出的初衷是将其作为一个通用的、介于XPointer与XSL间的语法模型。
但是XPath很快的被开发者采用来当作小型查询语言。

使用Jsoup的XPath需要导入额外的jar包

  JsoupXpath-0.3.2.jar

参考w3c的XPath语法文档来使用

package com.xml.jsoup;

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.util.List;


/**
 * @author OldAZ-PC
 * XPath查询
 */
public class JsoupDemo6 {
    public static void main(String[] args) throws Exception {
        //1 获取student。xml的路径
        String path = JsoupDemo2.class.getResource("student.xml").getPath();

        //2.获取Document对象
        Document document = Jsoup.parse(new File(path), "utf-8");
        //3.根据document对象,创建JXDocument对象
        JXDocument jxDocument = new JXDocument(document);

        //4.1结合xpath语法查询所有的student标签
        List<JXNode> jxNodes = jxDocument.selN("//student");
        for (JXNode jxNode:jxNodes){
        System.out.println(jxNode);
        }
        System.out.println("===================");
        //4.2查询所有的student标签下的那么标签
        List<JXNode> jxNodes2 = jxDocument.selN("//student/name");
        for (JXNode jxNode:jxNodes2){
            System.out.println(jxNode);
        }
        System.out.println("===================");

        //4.3查询student标签下带有属性的name标签
        List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id]");
        for (JXNode jxNode:jxNodes3){
            System.out.println(jxNode);
        }
        System.out.println("===================");
        //4.3查询student标签下带有属性的name标签,并且id的属性值为id01
        List<JXNode> jxNodes4 = jxDocument.selN("//student/name[@id='id01']");
        for (JXNode jxNode:jxNodes4){
            System.out.println(jxNode);
        }
        System.out.println("===================");

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值