Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在使用XmlWriter进行XmlSerialization时添加命名空间?_C#_.net_Xml_Xml Serialization - Fatal编程技术网

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

C# 如何在使用XmlWriter进行XmlSerialization时添加命名空间?,c#,.net,xml,xml-serialization,C#,.net,Xml,Xml Serialization,我将XmlWriter与Xml序列化结合使用。我能够很好地输出XML,但是如何在XmlWriter中包含xmlns属性似乎让我不知所措 要编写文档的开头,我使用以下命令: Writer.WriteStartDocument(); Writer.WriteStartElement("urlset","http://www.sitemaps.org/schemas/sitemap/0.9"); 创建XmlWriter后,我循环遍历SitemapNodes,我创建了它们,并通过如下序

我将XmlWriter与Xml序列化结合使用。我能够很好地输出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.

您可以将名称空间添加到XmlSerialization属性,例如:

[XmlElement(
ElementName = "Members",
Namespace = "http://www.cpandl.com")]
public Employee[] Employees;

如果您可以控制代码。

不要将标题用作标记字段。类似于“如何在使用XmlWriter进行XmlSerialization时添加名称空间?”我现在已经包含了这一点,但该属性仍然没有输出。没错,我是哑巴,我在firefox中查看输出,它隐藏了这些属性。查看源代码表明,我的原始信号代码实际上工作正常-)谢谢你的帮助。