c# – SyndicationFeed将名称空间前缀从a10更改为atom

前端之家收集整理的这篇文章主要介绍了c# – SyndicationFeed将名称空间前缀从a10更改为atom前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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));

猜你在找的C#相关文章