当前位置: 首页 > 知识库问答 >
问题:

jsoup仅剥离html标记而不是新行字符?

徐洛华
2023-03-14

我有下面的Java内容,我只想剥离html标记,而不是新行字符

<p>test1 <b>test2</b> test 3 </p> //line 1
<p>test4 </p> //line 2

如果我在文本丰富编辑器中打开上面的内容,第1行和第2行以不同的行显示(不显示

Jsoup.parse(aboveContent).text()

它删除所有html字符。但它在记事本的同一行中显示了所有的第1行和第2行。不知何故,Jsoup也删除了换行符。

我尝试的是:-

我还尝试替换

 Jsoup.parse(contentWith\r\n-Insteadof-</p>Tag ).text()

但是,在同一行中,JSoup仍然会删除行尾字符(在调试器中,我可以看到line1和line2)。

如何使Jsoup只剥离html字符而不剥离新行字符?


共有2个答案

左丘照
2023-03-14

因为text()删除了所有空白字符,所以只有一行。但您可以使用StringBuilder并在其中插入每一行:

final String html = "<p>test1 <b>test2</b> test 3 </p>"
                    + "<p>test4 </p>";

Document doc = Jsoup.parse(html);        
StringBuilder sb = new StringBuilder();


for( Element element : doc.select("p") )
{
    /*
     * element.text() returns the text of this element (= without tags).
     */
    sb.append(element.text()).append('\n');
}

System.out.println(sb.toString().trim());

输出:

test1 test2 test 3
test4
卢翔宇
2023-03-14

您也可以这样做:

public static String cleanNoMarkup(String input) {
    final Document.OutputSettings outputSettings = new Document.OutputSettings().prettyPrint(false);
    String output = Jsoup.clean(input, "", Whitelist.none(), outputSettings);
    return output;

}

这里最重要的是:1。白名单。none()-因此不允许使用任何标记2。。预打印(假)-因此不会删除换行符

 类似资料:
  • 问题内容: 如何从字符串中删除HTML标签,以便可以输出纯文本? 问题答案: 嗯,我尝试了您的功能,并在一个小例子上工作了: 你能举一个例子吗? Swift 4和5版本:

  • 我使用JSoup解析字符串,其中包含超文本标记语言标记为纯文本。例如: 它可以很好地解析它,但问题是我的Java字符串是否包含

  • 问题内容: 我在SQL Server2005中有包含HTML标记的数据,我想将所有内容都剥离掉,只在标记之间保留文本。理想的情况下也更换喜欢的东西带等 有没有简单的方法可以做到这一点,或者有人已经获得了一些示例T-SQL代码? 我没有添加扩展存储的proc之类的功能,因此更喜欢纯T-SQL方法(最好是一种与SQL 2000向后兼容的方法)。 我只想使用剥离的HTML来检索数据,而不是对其进行更新,

  • 问题内容: 我已经看到很多表达式可以删除一个特定的标签(或许多指定的标签),一个可以删除除一个特定标签之外的所有标签,但是我没有找到一种方法来删除其中除许多除外(即所有除外)之外的所有标签。 PHP。我对正则表达式不是很满意,所以我需要帮助。:) 谢谢! 问题答案: 确实做到这一点。

  • 问题内容: 是否存在现有的Java库,该库提供了一种从字符串中剥离所有HTML标记的方法?我正在寻找与PHP中的功能等效的东西。 我知道我可以使用这个问题中描述的正则表达式,但是我很好奇,是否可能已经有一种方法可以在Apache Commons库中的某个地方使用。 问题答案: 在开放了将近一个星期的问题之后,我可以肯定地说,Java API或Apache库中没有可用的方法可从字符串中剥离HTML标

  • 问题内容: 我需要用ajax调用产生的html替换页面中div的内容。问题是html中包含一些必要的脚本,并且jquery html()函数似乎将它们剥离了,我需要过滤响应并仅获取特定的div。 我正在考虑一种解决方法,该方法是从ajax响应中提取所有脚本标签,然后将其附加到DOM中,但是这样做很麻烦。 这是我的代码; 但这是任何结论。我尝试了那里提出的解决方案,但没有一个起作用。 编辑:我似乎找