漂亮的HTML片段输出

时间:2015-03-22 16:12:58

标签: java html jsoup transform pretty-print

我有一段HTML <div><p>text1</p></div><div><p>text1</p></div>

我想让它像这样

<div>
  <p>text1</p>
</div>
<div>
  <p>text1</p>
</div>

最简单的方法是什么? (我已经看过转换和jsoup)但不确定什么是真正聪明的使用。谢谢!

3 个答案:

答案 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)

我会使用HTML Tidy这里是online version

许多文本编辑器都有插件或内置功能。<​​/ p>

Sublime Text

BBEdit

Coda

答案 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();
}