2011-09-26 48 views
5

上的「未聲明的前綴」錯誤的解決方法我正在拉動網站的來源。然後我想提取它的一個特定部分。我的意圖是用LINQ到XML來做到這一點。XElement.Load()

但是,我得到的錯誤,當我分析源:

XElement source = XElement.Load(reader); 

這個問題似乎是命名空間,我沒有引用。我得到的錯誤:'addthis' is an undeclared prefix. Line 130, position 51.由於這一行:

<div class="addthis_toolbox addthis_pill_combo" addthis:url="http://www.foo.com/foo"> 

如果我刪除一個,其他的發生。

事情是,我只關心這個XML文件的一塊 - 我不需要能夠解析整個文件。我只是希望它在XElement中,所以我可以找到它的一部分。有沒有辦法讓我解析解析錯誤?我需要一個通用的解決方案 - 我想解析文件,不管任何undeclared prefix錯誤。

謝謝

回答

5

此XML無效。

爲了使用名稱空間前綴(如addthis:),必須通過編寫xmlns:addthis="some URI"來聲明名稱空間。

一般來說,您不應該使用XML解析器解析HTML,因爲HTML可能是無效的XML,由於這個原因和其他一些原因(未聲明的實體,未轉義的JS,未封閉的標籤)。
而是使用HTML Agility Pack

+0

你說得對,我覺得有點傻。感謝您的鏈接,這似乎是我需要的。 –