Xml 使用atom:channel元素中的链接验证RSS 2.0
我可以看到几个与有效的RSS 2.0相关的问题和答案,但我没有看到我的问题的答案,如果之前已经讨论过,很抱歉 我试图验证从用户提供的URL下载的XML,看看它们是否实际上是RSS2.0文件。为此,我使用了XmlReader和来自dotNet的其他东西 我在寻找完全验证标准Wordpress提要所需的所有模式时遇到了问题,但我确实有来自codeplex的RSS 2.0 XSD和来自其他地方的atom XSD,我还有一些基本的XML XSD 当我验证提要时,它会成功验证,但我有一个警告,因为在模式中找不到atom:link 我可以在atom的模式中看到,一个合适的atom文件只包含或根元素。如果我添加了一个适当的链接根元素,这将进行验证 我的问题是,我需要什么样的模式和设置才能让我的RSS验证器允许/识别/验证RSS/channel中的atom:link 对于RSS,我使用的模式是 对于Atom,我使用的模式是 我的验证测试代码如下所示:Xml 使用atom:channel元素中的链接验证RSS 2.0,xml,validation,rss,atom-feed,Xml,Validation,Rss,Atom Feed,我可以看到几个与有效的RSS 2.0相关的问题和答案,但我没有看到我的问题的答案,如果之前已经讨论过,很抱歉 我试图验证从用户提供的URL下载的XML,看看它们是否实际上是RSS2.0文件。为此,我使用了XmlReader和来自dotNet的其他东西 我在寻找完全验证标准Wordpress提要所需的所有模式时遇到了问题,但我确实有来自codeplex的RSS 2.0 XSD和来自其他地方的atom XSD,我还有一些基本的XML XSD 当我验证提要时,它会成功验证,但我有一个警告,因为在模式中
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;
}
我希望有人能帮助澄清这一点
谢谢
标记