xml解析Jsoup根据选择器查询以及根据Xpath查询

xml解析Jsoup根据选择器查询

selector:选择器

  使用的方法:Elements select(String cssQuery);

    语法:参考Selector类中定义的语法

复制代码
public class JsoupDemo04 {
    public static void main(String[] args) throws IOException {
        //获取studen.xml的path
        String path = JsoupDemo04.class.getClassLoader().getResource("student1.xml").getPath();
        //获取Document对象
        Document document = Jsoup.parse(new File(path), "UTF-8");
        //Elements select(String cssQuery);
        //查询name标签
        Elements name = document.select("name");
        System.out.println(name);
        System.out.println("------------------");
        //查询id值为1的元素
        Elements select = document.select("#1");
        System.out.println(select);
        System.out.println("------------------");
        //获取student标签并且number属性值为aaa_0001的age子标签
        //获取student标签并且number属性值为aaa_0001
        Elements select1 = document.select("student[number='aaa_0001']");
        System.out.println(select1);
        System.out.println("------------------");
        //获取student标签并且number属性值为aaa_0001的age子标签
        Elements age = select1.select("student[number='aaa_0001']>age");
        System.out.println(age);
    }
}
复制代码

 

 

 

 

 

 

xml解析根据Xpath查询

XPath:XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。

  使用Jsoup的Xpath需要额外导入jar包:JsoupXpath-0.3.2.jar  

  查询w3cschool参考手册,使用xpath的语法完成查询

复制代码
public class JsoupDemo04 {
    public static void main(String[] args) throws IOException, XpathSyntaxErrorException {
        //获取studen.xml的path
        String path = JsoupDemo04.class.getClassLoader().getResource("student1.xml").getPath();
        //获取Document对象
        Document document = Jsoup.parse(new File(path), "UTF-8");
        /**
         * 根据Xpath查询
         */
        //根据Document对象创建JXDocument对象
        JXDocument jxDocument = new JXDocument(document);
        //结合Xpath语法查询
        //查询所有的student标签
        List<JXNode> jxNodes = jxDocument.selN("//student");
        for (JXNode jxNode : jxNodes) {
            System.out.println(jxNode);
        }
        System.out.println("--------------------");
        //查询所有的student标签下的name标签
        List<JXNode> jxNodes1 = jxDocument.selN("//student/name");
        for (JXNode jxNode : jxNodes1) {
            System.out.println(jxNode);
        }
        System.out.println("--------------------");
        //查询所有的student标签下带有id属性的name标签
        List<JXNode> jxNodes2 = jxDocument.selN("//student/name[@id]");
        for (JXNode jxNode : jxNodes2) {
            System.out.println(jxNode);
        }
        System.out.println("--------------------");
        //查询所有的student标签下带有id属性的name标签标签id属性值为1
        List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id='1']");
        for (JXNode jxNode : jxNodes3) {
            System.out.println(jxNode);
        }
        System.out.println("--------------------");
    }
}
复制代码

 

posted @   xjw12345  阅读(339)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示