Dmy*_*kyi 9 html java transform pretty-print jsoup
我有一小段HTML <div><p>text1</p></div><div><p>text1</p></div>
我想让它变得像这样
<div>
<p>text1</p>
</div>
<div>
<p>text1</p>
</div>
Run Code Online (Sandbox Code Playgroud)
最简单的方法是什么?(我看过转换和jsoup)但不确定什么才能真正使用.谢谢!
Psh*_*emo 18
你可以像使用Jsoup一样
String html = "<div><p>text1</p></div><div><p>text1</p></div>";
Document doc = Jsoup.parseBodyFragment(html);
Run Code Online (Sandbox Code Playgroud)
但这会将你的文字包装成
<html>
<head></head>
<body>
..
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
为了摆脱这一部分你可以从部分<body>
像
System.out.println(doc.body().html());
Run Code Online (Sandbox Code Playgroud)
打印
<div>
<p>text1</p>
</div>
<div>
<p>text1</p>
</div>
Run Code Online (Sandbox Code Playgroud)
如果要增加缩进,可以先使用
doc.outputSettings().indentAmount(4);
Run Code Online (Sandbox Code Playgroud)
现在的结果看起来像
<div>
<p>text1</p>
</div>
<div>
<p>text1</p>
</div>
Run Code Online (Sandbox Code Playgroud)
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();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5866 次 |
最近记录: |