Jsoup工具类解析xml

Jsoup的使用

入门案例

public class JsoupDemo {
    public static void main(String[] args) {
        //获取Document对象
        //1.获取文件的路径,使用类的加载器
        String path = JsoupDemo.class.getClassLoader().getResource("Student.xml").getPath();
        //2.解析xml文档 获取到Document的树
        Document document = null;
        try {
            document = Jsoup.parse(new File(path),"UTF-8");
        } catch (IOException e) {
            e.printStackTrace();
        }
        //获取元素 Element组成的一个集合Elements
        Elements elements = document.getElementsByTag("name");
        //取出元素
        Element element = elements.get(0);
        //取出文本数据
        String text = element.text();
        System.out.println(text);

    }
}

Jsoup对象(工具类的使用)

  1. Jsoup工具类,可以解析xml,html文档,返回Document

1.parse()方法,是用来解析xml,html文件的

parse(File in,String charsetName):解析xml或者html文件的,需要一个file对象

parse(String html):解析html或者xml文件的字符串,也就是html或xml的内容

parse(URl url,int timeoutMiilles):根据网络中的一个URL获取资源路径,timeoutMiilles是一个超时时间

public class JsoupDemo {
    public static void main(String[] args) {
        URL url = null;
        try {
            url = new URL("https://www.oschina.net/p/jsoup?hmsr=aladdin1e1");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        Document parse = null;
        try {
            parse = Jsoup.parse(url, 10000);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //输出
        System.out.println(parse);
    }
}

2.Document:文档对象,代表内存中的dom树

getElementsByTag(String tagName):根据标签名称获取元素的集合

getElementsByAttribute(String key):根据属性的名称来获取元素的集合

getElementsByAttributeValue(String key,String value):根据对应的属性名和属性值来获取元素对象集合

getElementById(String id):根据id来获取指定的集合元素对象

3.Elements:元素Element的集合,可以当做ArrayList

4.Element:元素对象

1.获取子元素对象

getElementsByTag(String tagName):根据标签名称获取元素的集合

getElementsByAttribute(String key):根据属性的名称来获取元素的集合

getElementsByAttributeValue(String key,String value):根据对应的属性名和属性值来获取元素对象集合

getElementById(String id):根据id来获取指定的集合元素对象

2.获取属性值

String atter(String key):根据属性名称获取属性值

3.获取文本内容

String text():获取纯文本内容

String html():获取标签体的所以内容(包括子标签)

5.Node:节点对象 是Document和Elements的父类

快速的查询方式

1.根据选择器查询selector

Elements.selector(String cssQuery) 参考Selector的语法,也就是html中的选择器

2.XPath查询,w3c提供的一种快速查询的方式 XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航

使用XPath需要导入一个jar包 jsoupXpath [https://www.w3school.com.cn/xpath/xpath_intro.asp][xpath的语句规则如下 ]

public class JsoupDemo {
    public static void main(String[] args) {
        //获取Document对象
        //1.获取文件的路径,使用类的加载器
        String path = JsoupDemo.class.getClassLoader().getResource("Student.xml").getPath();
        //2.解析xml文档 获取到Document的树
        Document document = null;
        try {
            document = Jsoup.parse(new File(path),"UTF-8");
        } catch (IOException e) {
            e.printStackTrace();
        }
        //获取元素 Element组成的一个集合Elements
        Elements elements = document.getElementsByTag("name");
        //取出元素
        Element element = elements.get(0);
        //取出文本数据
        String text = element.text();
        System.out.println(text);
        //根据Document对象创建jxDocument
        JXDocument jx = new JXDocument(elements);
        //结合xpath的语法进行查询
        List<JXNode> jxNodes = jx.selN("//user");
        System.out.println(jxNodes.get(0));
    }
}
上一篇:如何用一行代码将 string[] 转成 int[] ?


下一篇:基本库urllib的使用(超详解!)