ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# – 覆盖syndicationfeed中的根元素,将名称空间添加到根元素

2019-06-29 19:52:22  阅读:238  来源: 互联网

标签:c xml rss syndicationfeed xmlwriter


除了a10之外,我还需要在我的feed的rss(root)元素中添加新的命名空间:

<rss xmlns:a10="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
.
.
.

我正在使用序列化为RSS 2.0的SyndicationFeed类,我使用XmlWriter输出feed,

var feed = new SyndicationFeed(
                    feedDefinition.Title,
                    feedDefinition.Description,
     .
     .
     .



using (var writer = XmlWriter.Create(context.HttpContext.Response.Output, settings))
        {
            rssFormatter.WriteTo(writer);
        }

我尝试在SyndicationFeed上添加AttributeExtensions,但它添加了新的命名空间
到通道元素而不是根,

谢谢

解决方法:

不幸的是,格式化程序不能以您需要的方式扩展.

您可以使用中间XmlDocument并在写入最终输出之前对其进行修改.

此代码将为最终xml输出的根元素添加命名空间:

var feed = new SyndicationFeed("foo", "bar", new Uri("http://www.example.com"));
var rssFeedFormatter = new Rss20FeedFormatter(feed);

// Create a new  XmlDocument in order to modify the root element
var xmlDoc = new XmlDocument();

// Write the RSS formatted feed directly into the xml doc
using(var xw = xmlDoc.CreateNavigator().AppendChild() )
{
    rssFeedFormatter.WriteTo(xw);
}

// modify the document as you want
xmlDoc.DocumentElement.SetAttribute("xmlns:example", "www.example.com");

// now create your writer and output to it:
var sb = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(sb))
{
    xmlDoc.WriteTo(writer);
}

Console.WriteLine(sb.ToString());

标签:c,xml,rss,syndicationfeed,xmlwriter
来源: https://codeday.me/bug/20190629/1329376.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有