使用C#将命名空间添加到XmlTextWriter

时间:2010-06-10 08:08:59

标签: xml-serialization

我有一个可序列化的类,他的root被serizlized到带有命名空间的XmlRootAttribute。 我想为这个根元素添加额外的命名空间,我该怎么办呢?添加XmlAttribute无法编译。

代码:

[System.Xml.Serialization.XmlRootAttribute("Root", Namespace = "http://www.w3.org/2003/05/soap-envelope", IsNullable = false)]
public class MyClass
{
    [System.Xml.Serialization.XmlElement("...")]
    public ClassA A;

    [System.Xml.Serialization.XmlElement("..")]
    public ClassB b;
}

在序列化之后,我得到了类似的东西:

<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      xmlns="http://www.w3.org/2003/05/soap-envelope">
<ClassA/>
<ClassB/>
</Envelope>

我想添加到rood additioanl命名空间,例如我希望xml是:

<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      **xmlns:tns="anotherXml"** 
      xmlns="http://www.w3.org/2003/05/soap-envelope">
<ClassA/>
<ClassB/>
</Envelope> 

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

也许试试这个:

XmlSerializerNamespaces XMLNamespaces = =new XmlSerializerNamespaces();
        XMLNamespaces.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
        XMLNamespaces.Add("xsd", "http://www.w3.org/2001/XMLSchema");
        XMLNamespaces.Add("tns", "anotherXml");

XMLSerializer.Serialize(XMLWriter, inputObject, XMLNamespaces);