漂亮的 HTML 片段输出
Pretty HTML snippet output
我有一段 HTML <div><p>text1</p></div><div><p>text1</p></div>
我想把它弄得像这样
<div>
<p>text1</p>
</div>
<div>
<p>text1</p>
</div>
最简单的方法是什么? (我看过 transform 和 jsoup)但不确定使用什么才是真正聪明的。谢谢!
我会用 HTML Tidy here is an online version.
许多文本编辑器都有插件或内置功能。
jTidy 可以胜任这项任务 - http://jtidy.sourceforge.net/howto.html
public String prettyPrintHTML(String rawHTML)
{
Tidy tidy = new Tidy();
tidy.setXHTML(true);
tidy.setIndentContent(true);
tidy.setPrintBodyOnly(true);
tidy.setTidyMark(false);
// HTML to DOM
Document htmlDOM = tidy.parseDOM(new ByteArrayInputStream(rawHTML.getBytes()), null);
// Pretty Print
OutputStream out = new ByteArrayOutputStream();
tidy.pprint(htmlDOM, out);
return out.toString();
}
你可以用Jsoup喜欢
String html = "<div><p>text1</p></div><div><p>text1</p></div>";
Document doc = Jsoup.parseBodyFragment(html);
但这会将您的文本换行成
<html>
<head></head>
<body>
..
</body>
</html>
要摆脱这部分,您可以从 <body>
中获得一部分,例如
System.out.println(doc.body().html());
打印
<div>
<p>text1</p>
</div>
<div>
<p>text1</p>
</div>
如果你想增加缩进,你可以通过
提前设置
doc.outputSettings().indentAmount(4);
现在结果看起来像
<div>
<p>text1</p>
</div>
<div>
<p>text1</p>
</div>
我有一段 HTML <div><p>text1</p></div><div><p>text1</p></div>
我想把它弄得像这样
<div>
<p>text1</p>
</div>
<div>
<p>text1</p>
</div>
最简单的方法是什么? (我看过 transform 和 jsoup)但不确定使用什么才是真正聪明的。谢谢!
我会用 HTML Tidy here is an online version.
许多文本编辑器都有插件或内置功能。
jTidy 可以胜任这项任务 - http://jtidy.sourceforge.net/howto.html
public String prettyPrintHTML(String rawHTML)
{
Tidy tidy = new Tidy();
tidy.setXHTML(true);
tidy.setIndentContent(true);
tidy.setPrintBodyOnly(true);
tidy.setTidyMark(false);
// HTML to DOM
Document htmlDOM = tidy.parseDOM(new ByteArrayInputStream(rawHTML.getBytes()), null);
// Pretty Print
OutputStream out = new ByteArrayOutputStream();
tidy.pprint(htmlDOM, out);
return out.toString();
}
你可以用Jsoup喜欢
String html = "<div><p>text1</p></div><div><p>text1</p></div>";
Document doc = Jsoup.parseBodyFragment(html);
但这会将您的文本换行成
<html>
<head></head>
<body>
..
</body>
</html>
要摆脱这部分,您可以从 <body>
中获得一部分,例如
System.out.println(doc.body().html());
打印
<div>
<p>text1</p>
</div>
<div>
<p>text1</p>
</div>
如果你想增加缩进,你可以通过
提前设置doc.outputSettings().indentAmount(4);
现在结果看起来像
<div>
<p>text1</p>
</div>
<div>
<p>text1</p>
</div>