2011-10-03 25 views
3

我正在處理一些格式不正確的HTML頁面。至少,我認爲它們是畸形的,因爲當我在Nokogiri中解析它們然後執行to_html時,元素不會再正確顯示。但是,當我用Hpricot解析它們時,它們顯示正確。在Nokogiri中禁用錯誤​​更正

我寧可不使用Hpricot,因爲它似乎不可能將Hpricot :: Elem實例添加到文檔(無需將它們轉換爲字符串,添加,然後再解析)。

我可以禁用Nokogiri的錯誤更正,以便我可以將HTML更接近寫入的方式嗎?

+0

偉大的問題。我還沒有找出差異。在此之前,您可以在(http://pastie.org/2638305)和(http://pastie.org/2638308)上查看原始html和「nokogiri.to_html」代碼。 – JellicleCat

+0

我發現Hpricot的「糾錯」通過強制執行不可換行塊元素內聯元素規則,即提取塊元素(包裝)並將其放在內聯元素後面元素(包裝)。將':fixup_tags'和':xhtml_strict'設置爲false並不能防止這種行爲。 – JellicleCat

+1

您的HTML有效的XML?如果是,那麼你可能會'Nokogiri :: XML()'它(或Hpricot等價物),並且嵌套規則不適用。 –

回答

2

您的XHTML無效XHTML。如果我從http://pastie.org/2638305複製的內容,將它們保存爲「foo.xhtml」,然後嘗試在Chrome中打開它們,我看到:

此頁面包含以下錯誤:在上線768
錯誤列39:屬性構建錯誤

如果我看的話,我看(截)線768:

<img src="..." alt="Talk to us now!"http://wholesaleinsurance.net/> 

正如你所看到的,爲c在學習上不是句法上有效的。

你說你通過validator.w3.org跑的頁面,但是當我做,以你的pastie的內容,我得到:在檢查該文件作爲XHTML 1.0嚴格的發現

錯誤!
結果:15個錯誤,3個警告

所以......是你的實際內容不是你把pastie?

+0

您對第768行是對的,我在we.org的驗證器中看到錯誤,但是當我檢查它們時,他們都是(我認爲)假。我忽視了一個人說'沒有屬性X',並指出沒有出現在文檔中的代碼。例如'