由于XML格式错误而反序列化XML时出错
本文关键字:XML 出错 反序列化 错误 格式 由于 | 更新日期: 2023-09-27 18:09:15
所以我有一个相当简单的RSS,我正在下载,然后使用XmlSerializer进行反序列化。由于一些奇怪的原因,我无法弄清楚,而且在报告了这个问题之后,RSS的所有者几个月后都没有修复。
这是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>
由于>gt,它应该是>-再次,我不知道为什么他们的RSS将额外的字符放在那里,所以不格式化的部分在描述元素中。
反序列化时,我得到一个错误:
Unexpected node type EntityReference. ReadElementString method can only be called on elements with simple or empty content. Line 3231, position 130.
的问题!
如果这些经过处理的字符包含在一个适当的元素中,为什么它要关心是否有一个格式错误的URL编码字符串?
这是因为XmlSerializer试图将这些编码值还原为原始字符吗?
处理这个问题的最好方法是什么?请记住,我在每个RSS提要上只遇到过一两次这种类型的问题,而且只针对>和<编码-所以也许只是一个简单的查找/替换?
抱歉,如果我在解释这个时使用了错误的术语。
提前感谢您的帮助!
您正在处理XML元素中的HTML内容。
它看起来正确编码和解码应该是自动的。但是您的片段确实是"畸形的",这是大多数Xml读者拒绝处理的情况—他们只是抛出一个错误。
- 处理这个问题的最好方法是什么?
您必须在加载XML之前修复它。在本例中,
rssText = rssText.Replace("/a>gt;" , "/a>");
应该做这件事。然后<description>
的值应该被读取为有效的HTML