gpt4 book ai didi

c# - 从 XmlWriter.WriteStartElement 中排除 namespace 的问题

转载 作者:数据小太阳 更新时间:2023-10-29 02:59:53 27 4
gpt4 key购买 nike

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

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

<atom:link href="http://localhost" rel="self" type="application/rss+xml" />

问题是我无法使用 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 的答案以获得解决方案。

最佳答案

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

您可以更早地编写 namespace 声明,在这种情况下,您只需要 WriteStartElement 重载,它采用元素名称和 namespace - 我认为然后自动使用前缀.

关于c# - 从 XmlWriter.WriteStartElement 中排除 namespace 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/654858/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com