我可以看到几个与有效RSS 2.0相关的问题和答案,但我没有看到我的问题的答案,对不起,如果之前已经涵盖过。
我正在尝试验证从用户提供的URL下载的XML,看看它们是否实际上是RSS 2.0文件。要做到这一点,我正在使用XmlReader和dotNet的其他东西。
我在寻找完全验证标准Wordpress提要所需的所有模式时遇到问题,但我确实有来自codeplex的RSS 2.0 XSD和来自其他地方的原子XSD,我还有一些XML XSD用于一些基础知识。
当我验证Feed时,它会成功验证,但我有一个警告,因为在架构中找不到atom:link。
我可以在原理模式中看到一个正确的原子文件只有< feed>或者< entry>根元素。如果我添加一个适当的链接根元素,则验证。
我的问题是,我需要哪些模式和设置才能让我的RSS验证器允许/识别/验证原子:rss / channel中的链接?
对于RSS,我正在http://rss2schema.codeplex.com/
使用架构对于Atom,我正在http://www.kbcafe.com/rss/atom.xsd.xml
使用架构我的验证测试代码如下所示:
string xml="";
try
{
//Download the RSS File
//To Do: Verify against RSS schema
//var Client = System.Net.HttpWebRequest.Create("http://www.ia.uk.com/feed");
var Client = System.Net.HttpWebRequest.Create("C:\\Development\\euspen2013\\Website\\RabjohnMark-branch\\App_Data\\test.xml");
var r = Client.GetResponse();
var rs = r.GetResponseStream();
var valerrors = new List<string>();
var valwarnings = new List<string>();
XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Parse;
settings.Schemas.Add(null, "C:\\Development\\euspen2013\\Website\\RabjohnMark-branch\\App_Data\\rss-2_0.xsd");
settings.Schemas.Add(null, "C:\\Development\\euspen2013\\Website\\RabjohnMark-branch\\App_Data\\dc-simple.xsd");
settings.Schemas.Add(null, "C:\\Development\\euspen2013\\Website\\RabjohnMark-branch\\App_Data\\xml.xsd");
settings.Schemas.Add(null, "C:\\Development\\euspen2013\\Website\\RabjohnMark-branch\\App_Data\\atom.xsd");
settings.ValidationType = ValidationType.Schema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation;
settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
settings.XmlResolver = new XmlUrlResolver();
settings.ValidationEventHandler += new ValidationEventHandler((s, a) => { if (a.Severity == XmlSeverityType.Error) valerrors.Add(a.Message); else valwarnings.Add(a.Message); });
var rr = XmlReader.Create(rs, settings);
var nsm = new XmlNamespaceManager(rr.NameTable);
var doc = new XmlDocument();
doc.Load(rr);
rr.Close();
rs.Close();
if (valerrors.Count() > 0) return; else xml = doc.OuterXml;
} catch (Exception e) {
return;
}
我希望有人可以帮助增加一些清晰度。
谢谢,
标记