4

我正在输出全部压缩在一起的 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

4 回答 4

4

正如用户 4M01 所建议的那样:在命令行上,将管道附加到 HTML tidy 的调用中。

xmllint的 HTML 输出将被修复;tidy 将在您的 html 片段周围包装一些合理的 ...。

xmllint --xpath "//tr[6]/td[7]" --html - | tidy -q
于 2013-01-03T15:15:54.710 回答
4

tidy -i设置indent: auto配置值。如果我将它设置为 auto 而不是 auto yes,我始终会获得更好的缩进样式:

tidy --indent yes 
于 2013-04-05T12:20:03.227 回答
2

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

尝试添加 body 标记并在其上再次运行 xmllint。

<body><table><tr><td><b>Foo</b></td></tr></table>
<table><tr><td>Bar</td></tr></table></body>
于 2012-02-13T15:15:14.607 回答
1

你试过HTML Tidy吗?更多信息可在W3sourceforge获得。即使有 GUI 工具,称为GuiTidy。这个工具很棒,它们不仅有助于正确缩进,还可以验证 html 代码。

希望这有帮助

于 2012-02-14T18:21:54.027 回答