我正在将XmlWriter与Xml Serialization结合使用。我可以输出XML,但是如何在XmlWriter中包含xmlns属性似乎正在逃避我。
要编写文档的开头,我使用以下内容:
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.
答案 0 :(得分:4)
您可以将命名空间添加到XmlSerialization属性,例如:
[XmlElement(
ElementName = "Members",
Namespace = "http://www.cpandl.com")]
public Employee[] Employees;
如果您可以控制代码。