首页 > 解决方案 > java中的Jsoup.parse()和Jsoup.ParseBodyFragment()有什么区别?

问题描述

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

class JsoupTester {
        public static void main(String[] args) {
                String html = "<html><head><title>Sample Title</title></head><body><p>Sample Content</p></body></html>";
                Document document = Jsoup.parse(html);
                System.out.println(document.body());
                Document document2 = Jsoup.parseBodyFragment(html);
                System.out.println(document2.body());


        }
}

java中的 Jsoup.parse() 和 Jsoup.ParseBodyFragment() 有什么区别,因为它们都给出相同的输出?

输出 :

shiv@OS:~/CodeSnippets/TrashCode$ javac JsoupTester.java 
shiv@OS:~/CodeSnippets/TrashCode$ java JsoupTester
<body>
 <p>Sample Content</p>
</body>
<body>
 <title>Sample Title</title>
 <p>Sample Content</p>
</body>

标签: javajsoup

解决方案


文档所述, parse 方法将完整的 HTML 文档作为输入,而 parseBodyFragment 方法将 HTML 正文片段作为输入。

您可以通过运行JShell来测试差异:

jshell --class-path jsoup-1.13.1.jar

如果您使用带有 a 的 HTML<title>文档<head>

var html = "<html><head><title>aaa</title><body>bbb</body></html>"

调用Jsoup.parse(html)给出:

<html>
  <head>
    <title>aaa</title>
  </head>
  <body>
    bbb
  </body>
</html>

并打电话Jsoup.parseBodyFragment(html)给:

<html>
  <head></head>
  <body>
    <title>aaa</title>bbb
  </body>
</html>

所以主要区别在于它Jsoup.parseBodyFragment总是会给你一个空头并且Jsoup.parse能够解析头部。


推荐阅读