我有一段HTML <div><p>text1</p></div><div><p>text1</p></div>
我想让它像这样
<div>
<p>text1</p>
</div>
<div>
<p>text1</p>
</div>
最简单的方法是什么? (我已经看过转换和jsoup)但不确定什么是真正聪明的使用。谢谢!
答案 0 :(得分:15)
您可以使用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>
答案 1 :(得分:2)
答案 2 :(得分:2)
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();
}