Pat*_*son 2 .net c# xml syndication
我有一个小问题,也许你可以帮助我.
我尝试使用XmlWriter编写一个看起来像这样的XML标签(w3c feed推荐):
<atom:link href="http://localhost" rel="self" type="application/rss+xml" />
Run Code Online (Sandbox Code Playgroud)
问题是,我不能使用WriteStartElement -方法,我会想(原子作为前缀和链接,元素名),因为这给了我一个" 的ArgumentException:不能使用前缀与空命名空间 ".
我的代码看起来像这样:
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();
}
Run Code Online (Sandbox Code Playgroud)
我认为我的问题很简单,很容易解决,但是怎么样?
更新:
问题已经解决了.检查Jon Skeets解决方案的答案.
为什么不使用适当的命名空间(http://www.w3.org/2005/Atom)?
您可以先写入命名空间声明,在这种情况下,您只需要WriteStartElement带有元素名称和命名空间的重载 - 我认为然后自动使用该前缀.
| 归档时间: |
|
| 查看次数: |
3471 次 |
| 最近记录: |