C# 从XmlWriter.WriteStarElement中排除命名空间时出现问题

C# 从XmlWriter.WriteStarElement中排除命名空间时出现问题,c#,.net,xml,syndication,C#,.net,Xml,Syndication,我有个小问题,也许你能帮我解决 我尝试使用编写如下()所示的XML标记: 我认为我的问题很琐碎,很容易解决,但如何解决呢 更新: public void WriteTo(XmlWriter writer, Feed feed) { // RSS element writer.WriteStartElement("rss", ""); writer.WriteAttributeString("version", "2.0"); writer.WriteAttribu

我有个小问题,也许你能帮我解决

我尝试使用编写如下()所示的XML标记:

我认为我的问题很琐碎,很容易解决,但如何解决呢

更新:

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答案以获得解决方案。

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


您可以更早地编写名称空间声明,在这种情况下,您只需要
writeStarteElement
重载,该重载采用元素名称和名称空间-我认为前缀随后会自动使用。

相应的名称空间已经包括在内。我从你的建议中得到的结果是,我已经用我得到的结果更新了上面的示例。无论如何谢谢你!
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();
}