我将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;
如果您可以控制代码.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。