加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 03:57:17 所属栏目:百科 来源:网络整理
导读:我正在使用System.ServiceModel.Syndication.SyndicationFeed创建一个rss源,从中我得到这样: rss xmlns:a10="http://www.w3.org/2005/Atom" version="2.0"channel.../channel/rss 这是所有的工作游泳,除了当我validate my feed. 验证器抱怨a10命名空间前缀,
我正在使用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));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读