当前位置:  开发笔记 > 编程语言 > 正文

从XmlWriter.WriteStartElement中排除名称空间的问题

如何解决《从XmlWriter.WriteStartElement中排除名称空间的问题》经验,为你挑选了1个好方法。

我有一个小问题,也许你可以帮助我.

我尝试使用XmlWriter编写一个看起来像这样的XML标签(w3c feed推荐):


问题是,我不能使用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();
}

我认为我的问题很简单,很容易解决,但是怎么样?

更新:

问题已经解决了.检查Jon Skeets解决方案的答案.



1> Jon Skeet..:

为什么不使用适当的命名空间(http://www.w3.org/2005/Atom)?

您可以先写入命名空间声明,在这种情况下,您只需要WriteStartElement带有元素名称和命名空间的重载 - 我认为然后自动使用该前缀.

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有