我将 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;
如果您可以控制代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)