我正在使用XmlDocument.Load加載具有泰語中的某些字符的XML文件的內容。應用程序出錯,出現以下異常。System.Xml.XmlException:給定編碼中的字符無效
System.Xml.XmlException:給定編碼中的字符無效。在System.Xml.XmlTextReaderImpl.GetChars(的Int32 maxCharsCount 線2,位置82處System.Xml.XmlTextReaderImpl.Throw(例外五) 在System.Xml.XmlTextReaderImpl.InvalidCharRecovery(的Int32 & bytesCount, 的Int32 & charsCount) )在System.Xml.XmlTextReaderImpl.ReadData()在 System.Xml.XmlTextReaderImpl.ParseText(的Int32 & startPos,的Int32 & endPos, 的Int32 & outOrChars)在 System.Xml.XmlTextReaderImpl.FinishPartialValue()在 的System.Xml .XmlTextReaderImpl.get_Value()at System.Xml.XmlLoader.LoadNode(Boolean skipOverWhitespace)at System.Xml.XmlLoader.LoadDocSequence(XmlDocument的parentDoc)在 System.Xml.XmlDocument.Load(XmlReader中讀取)
通知怪字符閉幕前標籤。此內容來自第三方,我無權訪問文件/內容。
我的問題是:
- 爲什麼出現在內容的怪字符從第三方提供商發送到我的 ?
- 有沒有什麼辦法可以成功地處理文件(加載到XmlDocument中) ,因爲我沒有 在處理它之前修改它的內容?
使用XmlReaderSettings.CheckCharacters = false。但更好 - 聯繫第三方,並要求他們解決一個問題,因爲它似乎是無效的XML。 – Evk
唯一有用的建議是開始檢查工作部分SO ...如果您無法與第三方合作以確保它們返回有效的XML,那麼您將被完全卡住,因爲您無法正確重建文檔(您怎麼知道文檔中還有哪些不正確的內容?)的確,您可以搜索數以千計的現有「讀取無效的XML」的問題 - 也許你會在那裏找到一些靈感...就像使用HTMLAgilityPack來讀取文本,或者從流中手動刪除無效的UTF8字節... –
確保它確實是第三方的問題,文件是不會被自己破壞(例如通過讀取錯誤的非UTF-8編碼。 – Evk