我们正在用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呢?这是一个草图:
- 跟踪打开和关闭标签,例如和
- 有一个计数器来计算当前的缩进水平。
- 也许可以使用堆栈来推送,弹出缩进级别
- 当你看到标签 时,迭代HTML字符串并将当前缩进水平推入堆栈
- 如果你看到一个嵌套的标签,那么增加缩进水平,并继续
- 当您看到结束标签时,例如:等等,然后弹出堆栈返回到prev缩进级别
我想在这里给你一个粗略的概念,你可以把它作为一个起点。我已经编写了许多基于perl的漂亮打印机。您可以使用Perl编写解析脚本,速度相当快。