由于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&amp;t=441307</link>
    <author>Malycia Kiss</author>
    <title>WTB Freighter / JF Pilot with PI</title>
    <description>&lt;a href=https://forums.eveonline.com/default.aspx?g=posts&amp;m=5976122#post5976122 &gt;Go to last post&lt;/a&gtgt; by</description>
    <a10:updated>2015-08-18T17:33:40Z</a10:updated>
</item>

由于&gtgt,它应该是>-再次,我不知道为什么他们的RSS将额外的字符放在那里,所以不格式化的部分在描述元素中。

反序列化时,我得到一个错误:

Unexpected node type EntityReference. ReadElementString method can only be called on elements with simple or empty content. Line 3231, position 130.

的问题!

  1. 如果这些经过处理的字符包含在一个适当的元素中,为什么它要关心是否有一个格式错误的URL编码字符串?

  2. 这是因为XmlSerializer试图将这些编码值还原为原始字符吗?

  3. 处理这个问题的最好方法是什么?请记住,我在每个RSS提要上只遇到过一两次这种类型的问题,而且只针对&gt和&lt编码-所以也许只是一个简单的查找/替换?

抱歉,如果我在解释这个时使用了错误的术语。

提前感谢您的帮助!

由于XML格式错误而反序列化XML时出错

您正在处理XML元素中的HTML内容。

它看起来正确编码和解码应该是自动的。但是您的片段确实是"畸形的",这是大多数Xml读者拒绝处理的情况—他们只是抛出一个错误。

  • 处理这个问题的最好方法是什么?
  • 您必须在加载XML之前修复它。在本例中,

    rssText = rssText.Replace("/a&gtgt;" , "/a&gt;");
    

    应该做这件事。然后<description>的值应该被读取为有效的HTML