C# 如何在使用XmlWriter进行XmlSerialization时添加命名空间?
我将XmlWriter与Xml序列化结合使用。我能够很好地输出XML,但是如何在XmlWriter中包含xmlns属性似乎让我不知所措 要编写文档的开头,我使用以下命令:C# 如何在使用XmlWriter进行XmlSerialization时添加命名空间?,c#,.net,xml,xml-serialization,C#,.net,Xml,Xml Serialization,我将XmlWriter与Xml序列化结合使用。我能够很好地输出XML,但是如何在XmlWriter中包含xmlns属性似乎让我不知所措 要编写文档的开头,我使用以下命令: Writer.WriteStartDocument(); Writer.WriteStartElement("urlset","http://www.sitemaps.org/schemas/sitemap/0.9"); 创建XmlWriter后,我循环遍历SitemapNodes,我创建了它们,并通过如下序
Writer.WriteStartDocument();
Writer.WriteStartElement("urlset","http://www.sitemaps.org/schemas/sitemap/0.9");
创建XmlWriter后,我循环遍历SitemapNodes,我创建了它们,并通过如下序列化将它们写入底层stringbuilder:
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.
您可以将名称空间添加到XmlSerialization属性,例如:
[XmlElement(
ElementName = "Members",
Namespace = "http://www.cpandl.com")]
public Employee[] Employees;
如果您可以控制代码。不要将标题用作标记字段。类似于“如何在使用XmlWriter进行XmlSerialization时添加名称空间?”我现在已经包含了这一点,但该属性仍然没有输出。没错,我是哑巴,我在firefox中查看输出,它隐藏了这些属性。查看源代码表明,我的原始信号代码实际上工作正常-)谢谢你的帮助。