Jsoup 是一个 Java 库,用于从 HTML(包括从 Web 服务器检索的 HTML)中解析数据,并使用 DOM、CSS 和类似于 jQuery 的方法进行操作。它提供了一种非常方便的方式来提取和操作数据,从单个的 HTML 文件到整个网站的数据。
XML解析即读写XML文档中的数据。框架的开发者通过XML解析读取框架使用者配置的参数信息,开发者也可以通过XML解析读取网络传来的数据。XML有如下解析思想:
将标记语言文档一次性加载进内存,在内存中形成一颗dom树
· 优点:操作方便,可以对文档进行CRUD的所有操作
· 缺点:占内存

逐行读取,基于事件驱动的。
· 优点:不占内存,一般用于手机APP开发中读取XML
· 缺点:只能读取,不能增删改
· JAXP:SUN公司提供的解析器,支持DOM和SAX两种思想
· DOM4J:一款非常优秀的解析器
· Jsoup:Jsoup是一款Java的HTML解析器,支持DOM思想。可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过CSS以及类似于jQuery的操作方法来取出和操作数据
· PULL:Android操作系统内置的解析器,支持SAX思想
步骤:
首先这里准备一个student.xml文件。

<?xml version="1.0" encoding="UTF-8" ?>
<body>
    <name>zhangsan</name>
    <name>lisi</name>
    <name>wangwu</name>
</body>import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class Demo1 {
    // 获取XML中所有学生的姓名
    public static void main(String[] args) throws IOException {
        // 2.加载XML文档进内存。获取DOM树对象Document
        // 2.1 获取类加载器
        ClassLoader classLoader = Demo1.class.getClassLoader();
        // 2.2使用类加载器,找到XML文档的路径
        String path = classLoader.getResource("com/example/xsd/student.xml").getPath();
        // 2.3加载XML文档进内存,并转成Document对象
        Document document = Jsoup.parse(new File(path), "utf-8");
        // 3.获取对应的标签Element对象
        Elements name = document.getElementsByTag("name");
        // 4.获取数据
        for (Element element : name) {
            String text = element.text();
            System.out.println(text);
        }
    }
}运行结果如下:

Jsoup:可以解析xml或html,形成dom树对象。
常用方法:
· static Document parse(File in, String charsetName):解析本地文件
· static Document parse(String html):解析html或xml字符串
· static Document parse(URL url, int timeoutMillis):解析网页源文
接下来解析本地的student.xml文件和https://blog.csdn.net/qq_53317005/article/details/133105261这篇文章
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.File;
import java.io.IOException;
import java.net.URL;
public class Demo2 {
 // Jsoup
 public static void main(String[] args) throws IOException {
  // 解析本地XML
  String path = Demo2.class.getClassLoader().getResource("com/example/xsd/student.xml").getPath();
  Document document = Jsoup.parse(new File(path), "utf-8");
  System.out.println(document);
  System.out.println("---------------------------------");
  // 解析网络资源
  Document document2 = Jsoup.parse(new URL("https://blog.csdn.net/qq_53317005/article/details/133105261"), 2000);
  System.out.println(document2);
 }
}运行结果如下:

Document:xml的dom树对象
常用方法:
· Element getElementById(String id):根据id获取元素
· Elements getElementsByTag(String tagName):根据标签名获取元素
· Elements getElementsByAttribute(String key):根据属性获取元素
· Elements getElementsByAttributeValue(String key,String value):根据属性名=属性值获取元素。
· Elements select(Sting cssQuery):根据选择器选取元素。
先准备一个xml文件:
<?xml version="1.0" encoding="UTF-8" ?>
<student>
    <body id="body">
        <name>zhangsan</name>
        <age id="aa">18</age>
        <sex class="sex">man</sex>
    </body>
    <script>
        #aa {
            age: 18;
        }
        .sex {
            sex: man;
        }
    </script>
</student>然后尝试通过不同的方式去解析该xml文件
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.File;
import java.io.IOException;
public class Demo3 {
  // Document
  public static void main(String[] args) throws IOException {
    String path = Demo3.class.getClassLoader().getResource("com/example/xsd/student.xml").getPath();
    Document document = Jsoup.parse(new File(path), "utf-8");
    // 根据id获取元素
    Element body = document.getElementById("body");
    System.out.println(body);
    System.out.println("----------------------");
    // 根据标签获取元素
    Elements name = document.getElementsByTag("name");
    for (Element element : name) {
      System.out.println(element);
     }
    System.out.println("----------------------");
    // 根据属性获取元素
    Elements english = document.getElementsByAttribute("id");
    for (Element element : english) {
      System.out.println(element);
     }
    System.out.println("----------------------");
    // 根据属性名=属性值获取元素
    Elements elementsByAttributeValue = document.getElementsByAttributeValue("id", "aa");
    for (Element element : elementsByAttributeValue) {
      System.out.println(element);
     }
    System.out.println("----------------------");
    // 使用CSS选择器获取元素
    Elements select = document.select("#aa");
    System.out.println(select);
    System.out.println("----------------------");
    Elements sex = document.select("sex");
    System.out.println(sex);
    System.out.println("----------------------");
    Elements select1 = document.select(".aa");
    System.out.println(select1);
   }
}// 根据id获取元素
// 根据标签获取元素
// 根据属性获取元素

// 根据属性名=属性值获取元素
// 使用CSS选择器获取元素

可以看得到都可以成功。
总的来说,Jsoup 是一个强大的 Java 库,用于处理 HTML 文档。它提供了多种功能,包括解析 HTML、提取数据、修改文档内容、清理用户输入的 HTML,以及发送 HTTP 请求等。以下是 Jsoup 的一些主要功能:
<table> 标签中提取数据)的特定方法。Jsoup 的这些功能使其成为处理 HTML 文档的强大工具,无论是在网络爬虫、Web 应用程序还是任何需要解析和操作 HTML 的场景中都非常有用。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。