【问题标题】:Jsoup: Replace a tag with new line => new line begins with spaceJsoup:用新行替换标签=>新行以空格开头
【发布时间】:2012-04-16 21:07:09
【问题描述】:

我必须用新行替换几个 HTML 标记,例如如您在示例代码中看到的 p 标签:

String html = "<p>Zeile1</p><p>Zeile2</p><p>Zeile3</p><p>Zeile4</p>";
Document doc = Jsoup.parse(html);
doc.select("p").append("\\n");
String sanitized = doc.text().replaceAll("\\\\n", System.getProperty("line.separator");
System.out.println(sanitized);

这是输出:

Zeile1
 Zeile2
 Zeile3
 Zeile4

如您所见,我在第 2-4 行中有空格。 它们来自哪里,我该如何摆脱它们?

【问题讨论】:

  • 只要您在文档上调用text(),就会在p 元素之间添加空格。不知道为什么。如果没有设置,您可以获取每个文本元素的集合并将它们连接起来以消除空格。

标签: java html jsoup


【解决方案1】:

像@bdares 的建议一样,您可以遍历元素:

String html = "<p>Zeile1</p><p>Zeile2</p><p>Zeile3</p><p>Zeile4</p>";
Document doc = Jsoup.parse(html);
StringBuilder b = new StringBuilder();
for (Element p : doc.select("p")) {
    b.append(p.text());
    b.append(System.getProperty("line.separator"));
}
System.out.println(b.toString());

输出:

Zeile1
Zeile2
Zeile3
Zeile4

【讨论】:

  • 感谢您的回答,但我使用了 String.trim() 方法来清理空格,因为我不仅替换了 p 标签,还替换了一些类似 div、pre、br、h1 的标签-h6,...
猜你喜欢
  • 2021-09-15
  • 1970-01-01
  • 2016-06-27
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2023-03-29
  • 1970-01-01
  • 2013-12-28
相关资源
最近更新 更多