我試圖將一塊(可能)格式錯誤的HTML加載到XMLDocument對象中,但它與XMLExceptions一起失敗......因爲存在額外的開啓/關閉標籤以及格式錯誤的XML標籤,例如<img >
<img />
解析格式不正確的XML
如何獲取XML以解析數據中的所有錯誤?在解析之前是否有任何XML驗證器可以應用,以糾正這些錯誤?或者會處理異常解析什麼可以解析?
我試圖將一塊(可能)格式錯誤的HTML加載到XMLDocument對象中,但它與XMLExceptions一起失敗......因爲存在額外的開啓/關閉標籤以及格式錯誤的XML標籤,例如<img >
<img />
解析格式不正確的XML
如何獲取XML以解析數據中的所有錯誤?在解析之前是否有任何XML驗證器可以應用,以糾正這些錯誤?或者會處理異常解析什麼可以解析?
的HTML Agility Pack將解析html,而不是xhtml,而且相當寬容。如果您使用了XmlDocument
,則該對象模型將很熟悉。
你想要做什麼是非常困難的。 HTML不能使用XML解析器進行分析,因爲XML是嚴格的,而HTML不是。如果該HTML符合XHTML(HTML as XML),那麼XML解析器將解析HTML而不會造成問題。
如果您真的想爲HTML使用XML解析器,您可能需要查看是否有任何HTML到XHTML轉換器。
換句話說,我還沒有遇到一個處理畸形XML的XML解析器,就不是設計成接受寬鬆的標記,如HTML(有很好的理由,太:))
您可能想查看this question的答案。
基本上,在美麗的.NET端口和HTML敏捷包之間有一個方法。
您不太可能會構建具有這種畸形結構級別的XmlDocument。 XmlDocument(據我所知)要求xml內容遵守正確的嵌套和閉包語法。
但是,您懷疑您可以用XmlReader來解析它。如果遇到某些令人震驚的錯誤,它仍可能會引發異常,但根據MSDN文檔,它至少可以披露錯誤的位置。
如果您只是處理HTML,那麼HTML Agility Pack可能是您的目的。
無法將格式不正確的XML加載到XmlDocument
中。
在CodePlex上
退房的Html Agility Pack取決於ONT他的特定需求,那麼您可以使用HTML Tidy清理文件,然後使用XMLDocument對象導入。
我會去處理例外,並嘗試如果你有一個畸形的想法... – abmv 2009-06-15 14:59:08
如果它格式不正確,它會引發發脾氣(XMLException),並不會解析它!沒有childNodes存在。 – 2009-06-15 15:02:43