加载xml文档失败,带有特殊字符»

我正在使用RSS提要,该文档包含一个特殊字符»

我猜测饲料编码不正确,但我不能改变它。 我想覆盖它,或者只是用友好的东西替换有问题的字符。

using (Stream stream = response.GetResponseStream()) { using (XmlReader reader = XmlReader.Create(stream)) { try { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(reader); //<--- FAILS HERE //parse the items of the feed 

» 是HTML命名实体 ,XML不支持。 开箱即用,XML 仅支持 &'"><

使用相应的数字实体» (或hex» )代替。

+1弗雷德里克说的话。 你也可以作为一个原始的非转义字符服务,大概用UTF-8编码。

如果它是别人的RSS源,你需要踢它们以停止生成格式错误的XML; 没有XML解析器会读取这个。

元素中,HTML内容通常应该是XML转义的。 因此,如果项目的描述是This is a really interesting article ,它应该在XML中显示为:

 This is a <em>really</em> interesting article 

因此,HTML编码的»字符应该是

 &raquo; 

如果直接从HTML源包含它而不进行转义,则这是一个更严重的XML注入问题。

(这是假设RSS 2.0。在各种早期版本的RSS中, 包含HTML或纯文本是否因规格而异,有时完全没有指定。对于旧的RSS版本,根本不可能使用HTML内容。)