Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java格式的漂亮打印(“仅缩进”)HTML文档(无JTidy)_Java_Html_Pretty Print_Jtidy_Jericho Html Parser - Fatal编程技术网

Java格式的漂亮打印(“仅缩进”)HTML文档(无JTidy)

Java格式的漂亮打印(“仅缩进”)HTML文档(无JTidy),java,html,pretty-print,jtidy,jericho-html-parser,Java,Html,Pretty Print,Jtidy,Jericho Html Parser,我们正在使用apaches velocity通用模板引擎生成HTML文件。生成的HTML有点难看,没有正确的缩进 在我的例子中,我把HTML存储在一个字符串中,我想用这种方式来处理它,它看起来很漂亮 我已经尝试了JTidy,但是当我通过它来导入原始HTML时,它改变了HTML源代码。有时它会添加或删除HTML标记 我的问题: 是否有一个java库或其他东西(只有!)可以在不添加、删除HTML文档中的标记的情况下漂亮地打印我的HTML代码?它应该只做缩进,使它看起来很漂亮打印!不多不少。有什么想法

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

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

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

我的问题:

是否有一个java库或其他东西(只有!)可以在不添加、删除HTML文档中的标记的情况下漂亮地打印我的HTML代码?它应该只做缩进,使它看起来很漂亮打印!不多不少。有什么想法吗?:-)

此外,欢迎提供代码建议、提示或提示


致以最诚挚的问候

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

  • 跟踪打开和关闭标记,例如和
  • 使用计数器计算当前缩进级别
  • 可能使用堆栈来推动、弹出缩进级别
  • 当您看到标记时,只需迭代HTML字符串并在堆栈上按下当前缩进级别
  • 如果您看到一个嵌套的标记,那么增加缩进级别并继续
  • 当你看到标签的末端时,例如。etc然后弹出堆栈以返回到上一缩进级别

  • 我想给你们一个大概的想法,你们可以用这个作为起点。我已经编写了许多基于perl的漂亮打印机。您可以使用Perl相当快地编写解析脚本。

    在java中查找任何SAX解析器示例。indent++用于开始标记,intent——用于结束,并使用计数的intent编写内容

    可能有点晚了,但我用Jsoup找到了解决这个问题的方法

    您可以只使用解析器获得html的“漂亮”版本,并且(如果需要)通过使用“自定义解析器”避免生成html元素

    我从中得到了答案

    及其

    publicstaticstringformathtml(stringhtml)引发异常{
    Document doc=Jsoup.parse(html,“,Parser.xmlParser());
    返回doc.toString();
    }

    我希望这有帮助


    关于

    @请参阅本网站上的hm,他们正在撰写关于java源代码的独立源代码格式化程序的文章。我正在寻找一个java库,它可以进行HTML漂亮的打印,这样我就可以在我的字符串变量中漂亮地打印HTML;-)看来除了JTidy没有别的选择了。。。您玩过配置吗?SAX解析器可能遇到的问题是,很难创建源文件的相同副本。您需要重建元素和属性-字符不会简单地回显到输出流。