2010-06-10 7 views
2

J'ai une classe sérialisable que sa racine est serizlized à XmlRootAttribute avec espace de noms. Je veux ajouter un espace de noms supplémentaire à cet élément racine, comment puis-je le faire? l'ajout de XmlAttribute n'a pas pu être compilé.Ajouter un espace de noms à XmlTextWriter en utilisant C#

Le code:

[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; 
} 

Après la sérialisation je reçois quelque chose comme ça:

<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> 

Je veux ajouter à l'espace de noms rood additioanl, par exemple je veux que le xml soit:

<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> 

Une idée?

Répondre

1

Peut-être essayer ceci:

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); 
Questions connexes