微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在使用XmlWriter进行XmlSerialization时添加名称空间?

我将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 举报,一经查实,本站将立刻删除。