Jsoup 对象的使用

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

一、parse 对象

parse:解析html或xml文档,返回Document

* parse:解析html或xml文档,返回Document
		* parse​(File in, String charsetName):解析xml或html文件的。
		* parse​(String html):解析xml或html字符串
		* parse​(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象
  1. parse​(File in, String charsetName):解析xml或html文件的。
public class JsoupDemo {
    public static void main(String[] args) throws Exception{
        //获取student.xml的path
        String path = JsoupDemo.class.getClassLoader().getResource("student.xml").getPath();
        //解析xml文档,加载文档进内存,获取dom树--->Document
        Document document = Jsoup.parse(new File(path),"utf-8");
        System.out.println(document);
    }
}

结果打印出 xml 文档内容
在这里插入图片描述
2. parse​(String html):解析xml或html字符串

public class JsoupDemo {
    public static void main(String[] args) throws Exception{
        String html = "<?xml version='1.0' encoding=\"UTF-8\"?>\n" +
                "<students>\n" +
                "    <student id='1'>\n" +
                "        <name>zhangsan</name>\n" +
                "        <age>23</age>\n" +
                "        <gender>male</gender>\n" +
                "        <br/>\n" +
                "    </student>\n" +
                "</students>" +
                "";
        Document document = Jsoup.parse(html);
        System.out.println(document);
    }
}

  1. parse​(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象
package jsoup;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import javax.print.DocFlavor;
import java.net.URL;

public class JsoupDemo {
    public static void main(String[] args) throws Exception{
        //代表网络中的一个链接
        URL url = new URL("https://blog.csdn.net/nanhuaibeian/article/details/104679459");
        Document document = Jsoup.parse(url,10000)
        System.out.println(document);
    }
}

二、Document 对象

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

* 获取Element对象:
		* getElementById​(String id):根据id属性值获取唯一的element对象
		* getElementsByTag​(String tagName):根据标签名称获取元素对象集合
		* getElementsByAttribute​(String key):根据属性名称获取元素对象集合
		* getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合

student.xml 内容

<?xml version='1.0' encoding="UTF-8"?>
<students>
    <student id='1'>
        <name>zhangsan</name>
        <age>23</age>
        <gender>male</gender>
        <br/>
    </student>
    <student id='2'>
        <name>lisi</name>
        <age>24</age>
        <gender>female</gender>
        <br/>
    </student>
</students>
public class JsoupDemo {
    public static void main(String[] args) throws Exception{
        String path = JsoupDemo.class.getClassLoader().getResource("student.xml").getPath();
        //解析xml文档,加载文档进内存,获取dom树--->Document
        Document document = Jsoup.parse(new File(path),"utf-8");
        Elements elements1 = document.getElementsByTag("name");
        Elements elements2 = document.getElementsByAttribute("id");
        Elements elements3 = document.getElementsByAttributeValue("id","1");
        //getElementById 直接返回的是 element 对象,不再是 elements
        Element element = document.getElementById("1");
        System.out.println(element);
    }
}

Elements:元素Element对象的集合。可以当做 ArrayList<Element>来使用

三、Element 元素对象

1)获取子元素对象
		* getElementById​(String id):根据id属性值获取唯一的element对象
		* getElementsByTag​(String tagName):根据标签名称获取元素对象集合
		* getElementsByAttribute​(String key):根据属性名称获取元素对象集合
		* getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合

(2)获取属性值
		* String attr(String key):根据属性名称获取属性值

(3)获取文本内容
		* String text():获取文本内容
		* String html():获取标签体的所有内容(包括字标签的字符串内容)

public class JsoupDemo {
    public static void main(String[] args) throws Exception{
        String path = JsoupDemo.class.getClassLoader().getResource("student.xml").getPath();
        //解析xml文档,加载文档进内存,获取dom树--->Document
        Document document = Jsoup.parse(new File(path),"utf-8");

//        通过 Element 对象获取子标签对象
        Element element_student = document.getElementsByTag("student").get(0);
        Elements ele_name = element_student.getElementsByTag("name");

//        获取 student 对象的属性值
        String number = element_student.attr("id");
//        获取文本内容
        String text = ele_name.text();//获取文本内容
        String html = ele_name.html();//获取标签体的所有内容(包括字标签的字符串内容)
    }
}

四、 Node 节点对象

是 Document 和 Element 的父类

发布了647 篇原创文章 · 获赞 285 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/nanhuaibeian/article/details/104679514