所以我有一個相當簡單的RSS,我正在下載,然後使用XmlSerializer進行反序列化。由於某些奇怪的原因,我無法弄清楚,也沒有在報告問題之後,RSS的擁有者在數月後還沒有修復。由於格式錯誤的XML導致反序列化XML
這是RSS的格式不正確項:
<item>
<guid isPermaLink="false">TopicID_441307</guid>
<link>https://forums.eveonline.com/default.aspx?g=posts&t=441307</link>
<author>Malycia Kiss</author>
<title>WTB Freighter/JF Pilot with PI</title>
<description><a href=https://forums.eveonline.com/default.aspx?g=posts&m=5976122#post5976122 >Go to last post</a>gt; by</description>
<a10:updated>2015-08-18T17:33:40Z</a10:updated>
</item>
的格式不正確的部分是在描述元素由於& GTGT,這是剛剛應該是& GT - 再次,我不知道爲什麼他們的RSS將額外的字符放在那裏。
反序列化的時候,我得到一個錯誤:
Unexpected node type EntityReference. ReadElementString method can only be called on elements with simple or empty content. Line 3231, position 130.
的問題!
如果這些消毒字符都包含一個適當的元素中,它爲什麼關心,如果有編碼字符串格式不正確的網址是什麼?
這是因爲XmlSerializer試圖將這些編碼值恢復爲原始字符?
處理這個問題的最佳方法是什麼?請記住,我只在一個或兩個RSS問題上遇到這種類型的問題,並且只適用於& gt和& lt編碼 - 所以也許只是一個簡單的查找/替換?
對不起,如果我在解釋這個時使用了錯誤的術語。
在此先感謝您的幫助!
有沒有辦法在反序列化過程中'關閉'這種HTML自動解碼?我只是感到困惑,爲什麼它會自動執行它,而不是僅僅返回字符串而是拋出一個錯誤。 – Josh
搜索字符串開始處的/ a表示什麼? – Josh
'/ a'來自正在關閉的''標籤。原始文本'>gt;'是錯誤的 - 它看起來像生成器中的錯誤。在RSS世界中並不罕見。 –