【发布时间】:2009-03-05 12:52:49
【问题描述】:
我将 XmlWriter 与 Xml 序列化结合使用。我能够很好地输出 XML,但是如何在 XmlWriter 中包含 xmlns 属性似乎让我无法理解。
要编写文档的开头,我使用以下内容:
Writer.WriteStartDocument();
Writer.WriteStartElement("urlset","http://www.sitemaps.org/schemas/sitemap/0.9");
创建了我的 XmlWriter 后,我循环遍历创建了它们的 SitemapNodes,并通过这样的序列化将它们写入底层字符串生成器:
foreach (uk.co.andrewrea.SitemapNode node in List)
{
Serializer.Serialize(Writer, node);
}
正如我所说,这很好用,但不包括上述根元素的命名空间。每次我尝试物理写入属性xmlns时,我都会得到一个异常,xmlns是系统保留给XML使用的,所以基本上我不能使用。
我知道如何使用 XmlTextWriter 和 XmlDocument 类来做到这一点,但我需要了解如何使用 XmlWriter 和通过序列化来实现这一点。
以下尝试还会引发有关该命名空间被保留的异常。
foreach (uk.co.andrewrea.SitemapNode node in List)
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9");
Serializer.Serialize(Writer, node, ns);
}
Exception Details: System.ArgumentException: Prefix "xmlns" is reserved for use by XML.
【问题讨论】:
-
不要将标题用作标签字段。类似“如何在使用 XmlWriter 进行 XmlSerialization 时添加命名空间?”
标签: c# .net xml xml-serialization