2009-06-15 185 views
6

我試圖將一塊(可能)格式錯誤的HTML加載到XMLDocument對象中,但它與XMLExceptions一起失敗......因爲存在額外的開啓/關閉標籤以及格式錯誤的XML標籤,例如<img ><img />解析格式不正確的XML

如何獲取XML以解析數據中的所有錯誤?在解析之前是否有任何XML驗證器可以應用,以糾正這些錯誤?或者會處理異常解析什麼可以解析?

+0

我會去處理例外,並嘗試如果你有一個畸形的想法... – abmv 2009-06-15 14:59:08

+0

如果它格式不正確,它會引發發脾氣(XMLException),並不會解析它!沒有childNodes存在。 – 2009-06-15 15:02:43

回答

14

HTML Agility Pack將解析html,而不是xhtml,而且相當寬容。如果您使用了XmlDocument,則該對象模型將很熟悉。

0

你想要做什麼是非常困難的。 HTML不能使用XML解析器進行分析,因爲XML是嚴格的,而HTML不是。如果該HTML符合XHTML(HTML as XML),那麼XML解析器將解析HTML而不會造成問題。

如果您真的想爲HTML使用XML解析器,您可能需要查看是否有任何HTML到XHTML轉換器。

換句話說,我還沒有遇到一個處理畸形XML的XML解析器,就不是設計成接受寬鬆的標記,如HTML(有很好的理由,太:))

2

您可能想查看this question的答案。

基本上,在美麗的.NET端口和HTML敏捷包之間有一個方法。

1

您不太可能會構建具有這種畸形結構級別的XmlDocument。 XmlDocument(據我所知)要求xml內容遵守正確的嵌套和閉包語法。

但是,您懷疑您可以用XmlReader來解析它。如果遇到某些令人震驚的錯誤,它仍可能會引發異常,但根據MSDN文檔,它至少可以披露錯誤的位置。

如果您只是處理HTML,那麼HTML Agility Pack可能是您的目的。

0

無法將格式不正確的XML加載到XmlDocument中。

在CodePlex上

1

退房的Html Agility Pack取決於ONT他的特定需求,那麼您可以使用HTML Tidy清理文件,然後使用XMLDocument對象導入。

相關問題