我将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.
解决方法:
您可以将名称空间添加到XmlSerialization属性,例如:
[XmlElement(
ElementName = "Members",
Namespace = "http://www.cpandl.com")]
public Employee[] Employees;
如果您可以控制代码.