漂亮的打印 ( "indentation-only" ) Java 中的 HTML 文档 (没有 JTidy)



我们正在用apaches velocity通用模板引擎生成HTML文件。生成的HTML有点难看,而且没有正确的缩进。

在我的例子中,我已经把HTML存储在一个字符串中,我想用这种方式操作,它看起来很漂亮。

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

我的问题:

是否有一个java库或其他东西在那里(只有!)漂亮的打印我的HTML代码不添加,从我的HTML文档中删除标签?它应该只做缩进,这样它看起来很漂亮!不多不少。什么好主意吗?: -)

也欢迎提供代码建议、提示或提示。

可能有点晚了,但是我用Jsoup找到了一个解决方案。

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

我从这个问题中得到了答案

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

我希望这对你有帮助。

在java中找到任何SAX解析器示例。缩进++用于开始标记,意图-用于结束标记,并编写计数意图的内容。

您为什么不自己编写一个简单的Java解析器来漂亮地打印HTML呢?这是一个草图:

  1. 跟踪打开和关闭标签,例如和
  2. 有一个计数器来计算当前的缩进水平。
  3. 也许可以使用堆栈来推送,弹出缩进级别
  4. 当你看到标签
  5. 时,迭代HTML字符串并将当前缩进水平推入堆栈
  6. 如果你看到一个嵌套的标签,那么增加缩进水平,并继续
  7. 当您看到结束标签时,例如:等等,然后弹出堆栈返回到prev缩进级别

我想在这里给你一个粗略的概念,你可以把它作为一个起点。我已经编写了许多基于perl的漂亮打印机。您可以使用Perl编写解析脚本,速度相当快。

相关内容

  • 没有找到相关文章

最新更新