嗨,的XDocument正在非常挑剔與XML的一個飼料我要解析,並不斷給我的錯誤替代的XDocument
「=」是一個意外標記。預期的標記是';'。第1行,位置576.
這基本上是XDocument在XML文檔中對一個鬆散的「=」符號哭泣。
我對源XML文檔沒有任何控制權,所以我需要讓XDocument忽略這個錯誤,或者使用其他一些類。任何一個想法?
嗨,的XDocument正在非常挑剔與XML的一個飼料我要解析,並不斷給我的錯誤替代的XDocument
「=」是一個意外標記。預期的標記是';'。第1行,位置576.
這基本上是XDocument在XML文檔中對一個鬆散的「=」符號哭泣。
我對源XML文檔沒有任何控制權,所以我需要讓XDocument忽略這個錯誤,或者使用其他一些類。任何一個想法?
它不會爲良好的XML,但如果你只需要加載一個壞的文檔然後HTML Agility Pack是一個很好的工具。它可以忽略許多使HTML不是XHTML而不是XML的東西,所以你的錯誤的XML輸入也可能被解析。它表示的對象模型與XmlDocument類似。例如
HtmlDocument doc = new HtmlDocument();
doc.Load("file.xml");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
{
HtmlAttribute att = link["href"];
att.Value = FixLink(att);
}
doc.Save("file.htm");
或者你可以用敏捷性包清理XML,然後養活自己乾淨的輸出,以進行進一步的處理真正的XML解析器。
這是一個快速和骯髒的把戲,我已經用於一次性任務。不一定建議通過適當的解決方案。
如果時間允許,我會建議在將它提供給XML解析器之前,以某種方式格式化/修復錯誤的XML內容(例如,可能以其字符串形式或使用其他工具)。
是的,我認爲這可能是最好的解決方案,我一直在使用htmlagilitypack一段時間,但並沒有認爲XML是如此的破碎以至於需要這樣的工具。該死的人不知道如何創建適當的XML提要... – Rob 2011-04-30 00:29:22
如果文檔不是格式正確的XML(而且我的猜測是在文檔或其他實體外觀字符串中有'& ='),那麼任何其他XML解析器都不會是任何其他XML解析器它更開心。您是否嘗試過在IE中加載文檔,以查看它是在那裏解析還是粘貼到XML驗證器?您也可以嘗試XmlDocument.Load()
,看看它是否在那裏解析,這是下一個最接近的XML解析器(除了需要一點設置的XmlReader之外)。
在這個問題的答案請看:Parsing an XML/XHTML document but ignoring errors in C#
我相信是分析它在try/catch塊,除去catch塊違規塊,並重新解析的最佳選擇。
發佈有問題的XML片段。這將有助於 – dkackman 2011-04-29 23:26:26