У меня есть сериализуемый класс, его корень сериализуется в 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>
Есть идеи?
Может быть, попробовать это:
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);