2012-02-08 81 views
3

我輸出的HTML全部壓碎在一起,並希望將其轉換爲適當的縮進。我一直在嘗試使用xmllint,但沒有喜悅。例如。當這是file.html:如何用xmllint縮進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)工具可用於此目的?謝謝...

回答

2

我認爲這是因爲您提供的HTML沒有根標記,因此使其成爲無效的XML。

嘗試添加body標籤並再次運行xmllint。

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

您試過?有關這方面的更多信息,請訪問 W3 & sourceforge。即使有GUI工具可用,它被稱爲GuiTidy。這個工具非常棒,它們不僅幫助正確縮進,而且還驗證了html代碼。

希望這有助於

4

隨着用戶4M01建議:在命令行中,管追加與調用HTML整潔。

的HTML輸出xmllint將被修復;整潔將圍繞你的html片段進行一些合理的...。

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

tidy -i設置indent: auto配置值。如果不是汽車我把它設置爲yes,我總是有更好的縮進風格:

tidy --indent yes