我正在使用System.ServiceModel.Syndication.SyndicationFeed创建一个RSS源,从中我得到这样:
<RSS xmlns:a10="http://www.w3.org/2005/Atom" version="2.0"><channel>...</channel></RSS>
这是所有的工作游泳,除了当我validate my feed.
验证器抱怨a10命名空间前缀,并建议我使用atom.这听起来很合理..除了我看不到直接改变前缀的方式.
关于改变前缀的方法的任何想法?
解决方法
要为原子扩展指定自定义名称,您需要在Feed格式化程序上禁用SerializeExtensionsAsAtom:
var formatter = Feed.GetRSS20Formatter(); formatter.SerializeExtensionsAsAtom = false;
那么你需要添加命名空间
XNamespace atom = "http://www.w3.org/2005/Atom"; Feed.AttributeExtensions.Add(new XmlQualifiedName("atom",XNamespace.Xmlns.NamespaceName),atom.NamespaceName);
现在,您可以开始使用扩展
Feed.ElementExtensions.Add(new XElement(atom + "link",new XAttribute("href",FeedLink),new XAttribute("rel","self"),new XAttribute("type","application/RSS+xml")));
最后将Feed写入响应流:
formatter.WriteTo(new XmlTextWriter(Response.Output));