我一直试图在我的新闻阅读器应用程序中使用Argotic来处理RSS提要。对于大多数用户来说,它工作得很好,但是在某些提要(像这样)上,它会出现以下问题:
其他信息:出于安全原因,本XML文档禁止DTD。要启用DTD处理,请将XmlReaderSettings上的XmlReaderSettings属性设置为分析并将设置传递给XmlReader.Create方法。
错误很简单,我传递了一个启用了XMLReaderSettings的DtdProcessing对象。但随后出现了以下情况:
“System.Xml.XmlException”类型的未处理异常出现在System.Xml.dll附加信息中:“;”字符(十六进制值0x3B )不能包含在名称中。第9行,位置366。
我使用的代码:
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.IgnoreComments = true;
    settings.IgnoreWhitespace = true;
    settings.DtdProcessing = DtdProcessing.Parse;
    XmlReader reader = XmlReader.Create(this.url, settings);
    RssFeed feed = new RssFeed();
    feed.Load(reader);我遗漏了什么?
发布于 2015-06-19 13:56:08
似乎忽略了DtdProcessing解决了我的问题。
settings.DtdProcessing = DtdProcessing.Ignore;发布于 2015-06-18 17:24:51
例外情况是告诉您RSS提要是非法的,具体来说,名称包含;字符。W3C规范似乎禁止这样做:
鼓励文档作者使用自然语言中有意义的单词或单词组合的名称,并避免在名称中使用符号或空白字符。请注意,冒号、连字符-减号、句号(句号)、低行(下划线)和中间DOT是明确允许的。 ASCII符号和标点符号以及相当大的Unicode符号组被排除在名称之外。
因为其他RSS阅读器也抱怨这个提要可能无效。但是,在编写本报告时,W3C验证器显示它是有效的!
根据XmlReaderSettings.ConformanceLevel的MSDN文档,无论您的ConformanceLevel是什么,这个问题都会导致异常,但是您可能会在XmlReaderSettings中找到另一个可以关闭行为的设置(将设置提供给XmlReader.Create )。否则,如果不能修复提要,则必须对其执行一些预处理。
https://stackoverflow.com/questions/30921336
复制相似问题