有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Jsoup之间的区别是什么。parse()和Jsoup。java中的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());


        }
}

Jsoup之间的区别是什么。parse()和Jsoup。java中的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>

共 (1) 个答案

  1. # 1 楼答案

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

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

    jshell  class-path jsoup-1.13.1.jar
    

    如果在<head>中使用带有<title>的HTML文档:

    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总是给你一个空的head,并且Jsoup.parse能够解析head部分