java - 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>
解决方案
如文档所述, 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
能够解析头部。
推荐阅读
- swift - 列表仅显示 Swift 中传递的数据中的最后一个数组
- autodesk-forge - 使用选项 setDisplayEdges(true) 时材质变为白色
- android - 如何在 jsoup 的 ui li 标签中获取文本?
- javascript - 遍历段落数组并从 JavaScript 中的另一个数组添加内容
- javascript - 当我使用 db.Entry(x).State = EntityState.Modified; 时,Json 结果不起作用
- project-reactor - 迭代一个Flux,里面执行一个Mono,下一步使用结果
- swift - 麦克风在 iOS 13 上无法与 CallKit VoIP 通话一起使用
- java - 我们如何将 tensorflow 2.x 模型导入 Java?
- extjs - ExtJS 存储到 POST、GET、PUT 和 DELETE
- sql - 如何旋转/旋转具有任意列数的多个 SQL 表?