您可以子类
XmlTextReader
超驰
ReadElementString
在读取时跳过或修改有问题的元素。仍然感觉像一个黑客,但至少避免预处理与regex。
下面是一个完成工作的简单实现:
class BrokenFeedXmlReader : XmlTextReader
{
// Additional XmlTextReader constructors can be added in
// similar fashion as needed
public BrokenFeedXmlReader(TextReader input)
: base(input)
{
}
public override string ReadElementString()
{
if ("copyright" == Name)
{
base.Skip();
return String.Empty;
}
return base.ReadElementString();
}
}
然后,您的示例代码如下所示:
using (XmlReader xmlr = new BrokenFeedXmlReader(new StringReader(allXml)))
{
var items = from item in SyndicationFeed.Load(xmlr).Items
select item;
}