【发布时间】:2009-03-17 15:54:00
【问题描述】:
我有一个小问题,也许你可以帮我解决。
我尝试使用XmlWriter 编写一个如下所示的 XML 标记 (w3c feed recommendation):
<atom:link href="http://localhost" rel="self" type="application/rss+xml" />
问题是我不能像我想要的那样使用WriteStartElement-方法(原子作为前缀,链接作为元素名称),因为这给了我一个“ArgumentException: Cannot use a前缀为空的命名空间"。
我的代码如下所示:
public void WriteTo(XmlWriter writer, Feed feed)
{
// RSS element
writer.WriteStartElement("rss", "");
writer.WriteAttributeString("version", "2.0");
writer.WriteAttributeString("xmlns", "atom", string.Empty, "http://www.w3.org/2005/Atom");
// Channel element
writer.WriteStartElement("channel");
// The link to the feed.
writer.WriteStartElement("link", "atom");
writer.WriteAttributeString("href", feed.FeedUrl.ToString());
writer.WriteAttributeString("rel", "self");
writer.WriteAttributeString("type", "application/rss+xml");
writer.WriteEndElement();
// Feed information
writer.WriteElementString("title", feed.Title);
writer.WriteElementString("description", feed.Description);
writer.WriteElementString("link", feed.Link.ToString());
// Iterate through all items.
foreach (FeedItem item in feed.Items)
{
writer.WriteStartElement("item");
writer.WriteElementString("title", item.Title);
writer.WriteElementString("link", item.Link.ToString());
writer.WriteElementString("description", item.Description);
writer.WriteElementString("guid", item.Guid);
writer.WriteEndElement();
}
// Channel element end
writer.WriteEndElement();
// RSS element end
writer.WriteEndElement();
}
我认为我的问题是微不足道的,很容易解决,但是如何解决呢?
更新:
问题解决了。查看 Jon Skeets 的答案以获取解决方案。
【问题讨论】:
标签: c# .net xml syndication