漂亮的打印(“仅缩进”)Java中的HTML文档(没有JTidy)

时间:2011-07-29 09:43:49

标签: java html pretty-print jtidy jericho-html-parser

我们正在使用apaches velocity通用模板引擎生成HTML文件。生成的HTML有点难看,而不是使用correcht缩进。

在我的情况下,我已经将HTML存储在一个字符串中,我希望以这种方式操作它,它看起来很漂亮。

我已经尝试了JTidy,但是当我通过它管道原始HTML时,它改变了HTML源代码。有时它会添加或删除HTML标记。

我的问题:

是否有一个java库或其他东西(仅!)非常打印我的HTML代码而不添加,从我的HTML文档中删除标签?它只会做缩进,所以看起来很漂亮!没有更多,没有更少。有任何想法吗? : - )

欢迎提供代码建议,提示或提示。

祝你好运

3 个答案:

答案 0 :(得分:2)

也许有点迟到,但我找到了Jsoup的解决方案。

你可以得到"漂亮"仅使用解析器的html版本,并且(在需要的情况下)通过使用"自定义解析器"来避免生成html元素。

我从这个Jsoup question

得到了答案

它的

public static String formatHTML(String html) throws Exception{ Document doc = Jsoup.parse(html, "", Parser.xmlParser()); return doc.toString(); }

我希望这会有所帮助。

此致

答案 1 :(得分:1)

在java中查找任何SAX解析器示例。缩进++用于打开标签,意图 - 用于关闭,以及用计数的意图写入内容。

答案 2 :(得分:0)

为什么不自己编写一个简单的Java解析器来打印HTML。这是一幅草图:

  1. 跟踪打开和关闭标签,例如
  2. 有一个计数器来计算出当前的缩进级别。
  3. 也许使用堆栈来推送,弹出缩进级别
  4. 只需通过HTML字符串进行迭代,并在看到标记时将当前缩进级别推送到堆栈
  5. 如果您看到嵌套标记,则增加缩进级别并继续
  6. 当您看到标记的结尾时,例如。等然后弹出堆栈返回到缩进级别
  7. 我想在这里给你一个粗略的想法,你可以用这个作为起点。我写过许多基于perl的漂亮打印机。您可以使用Perl来快速编写解析脚本..