java 使用jsoup解析HTML时避免删除空格和换行符

vsaztqbk  于 2023-03-11  发布在  Java
关注(0)|答案(2)|浏览(448)

我有一个样本代码如下.

String sample = "<html>
<head>
</head>
<body>
This is a sample on              parsing HTML body using jsoup
This is a sample on              parsing HTML body using jsoup
</body>
</html>";

Document doc = Jsoup.parse(sample);
String output = doc.body().text();

输出为

This is a sample on parsing HTML body using jsoup This is a sample on `parsing HTML body using jsoup`

但我希望输出为

This is a sample on              parsing HTML body using jsoup
This is a sample on              parsing HTML body using jsoup

怎样解析它才能得到这个输出呢?或者在Java中有别的方法吗?

xv8emn3q

xv8emn3q1#

您可以禁用文档的漂亮打印以获得您想要的输出,但是您还必须将.text()更改为.html()

Document doc = Jsoup.parse(sample);
doc.outputSettings(new Document.OutputSettings().prettyPrint(false));
String output = doc.body().html();
4uqofj5v

4uqofj5v2#

HTML规范要求将多个空白字符折叠成单个空白字符。因此,在解析示例时,解析器会正确地删除多余的空白字符。
我不认为你可以改变解析器的工作方式。你可以添加一个预处理步骤,用不可断空格()替换多个空格,这样就不会折叠。当然,副作用是这些空格是不可断的(如果你真的只想使用呈现的文本,就像doc.body().text())。

相关问题