Добавить пространство имен в XmlTextWriter с помощью C # - PullRequest
2 голосов
/ 10 июня 2010

У меня есть сериализуемый класс, его корень сериализуется в 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 Ответ

1 голос
/ 10 июня 2010

Может быть, попробовать это:

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);
...