如何使用xmllint缩进html?

时间:2012-02-08 16:43:38

标签: html xmllint

我正在输出所有粉碎的html,并希望将其转换为适当的缩进。我一直在尝试使用xmllint,但没有喜悦。例如。当它在file.html中时:

<table><tr><td><b>Foo</b></td></tr></table>
<table><tr><td>Bar</td></tr></table>

我明白了:

$ xmllint --format file.html
file.html:2: parser error : Extra content at the end of the document
<table><tr><td>Bar</td></tr></table>
^
<<< exit status [1] >>>

但是当file.html单独包含这些行时,它可以正常工作(删除第二行):

$ xmllint --format file.html
<?xml version="1.0"?>
<table>
  <tr>
    <td>
      <b>Foo</b>
    </td>
  </tr>
</table>

当我参与--html选项时,它更有可能无错误地运行,但它不会缩进。

有什么建议吗?我可以使用其他(* nix)工具吗?谢谢......

4 个答案:

答案 0 :(得分:4)

用户4M01建议:在命令行中,通过调用HTML tidy附加管道。

xmllint 的HTML输出将被修复;整理将围绕你的html片段包装一些合理的。

xmllint --xpath "//tr[6]/td[7]" --html - | tidy -q

答案 1 :(得分:2)

我认为这是因为您提供的HTML没有根标记,从而使其成为无效的XML。

尝试添加body标签并再次运行xmllint。

<body><table><tr><td><b>Foo</b></td></tr></table>
<table><tr><td>Bar</td></tr></table></body>

答案 2 :(得分:2)

tidy -i设置indent: auto配置值。如果不是自动我将它设置为yes,我一直有更好的缩进风格:

tidy --indent yes 

答案 3 :(得分:1)

你试过HTML Tidy吗?有关这方面的更多信息,请访问 W3&amp; sourceforge。即使有可用的GUI工具,也称为GuiTidy。这个工具很棒,它们不仅有助于正确缩进,还可以验证HTML代码。

希望这个帮助