2009-10-09 11 views
5

Je mets juste la touche finale à mon désérialiseur Zthes format (System.Xml.Serialization) qui utilise l'espace de noms "dc" dans l'élément "thes". Tous les éléments "term" se déseralisent très bien car ils n'ont pas d'espace de nommage mais je n'arrive pas à comprendre comment dire au désérialisateur que les "thes" ont un espace de nommage.Comment désérialiser des espaces de noms XML en C# (System.Xml.Serialization)?

Voici ce que j'essaie de faire (ce qui ne fonctionne pas) alors j'espère que quelqu'un pourrait me donner la bonne syntaxe.

[XmlElement("namespace:someElement")] 
public string SomeElement; 

Répondre

8

Voici un échantillon rapide pour vous ...

[XmlRoot("myObject")] 
public class MyObject 
{ 
    [XmlElement("myProp", Namespace = "http://www.whited.us")] 
    public string MyProp { get; set; } 

    [XmlAttribute("myOther", Namespace = "http://www.whited.us")] 
    public string MyOther { get; set; } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     var xnames = new XmlSerializerNamespaces(); 
     xnames.Add("w", "http://www.whited.us"); 
     var xser = new XmlSerializer(typeof(MyObject)); 
     using (var ms = new MemoryStream()) 
     { 
      var myObj = new MyObject() 
      { 
       MyProp = "Hello", 
       MyOther = "World" 
      }; 
      xser.Serialize(ms, myObj, xnames); 
      var res = Encoding.ASCII.GetString(ms.ToArray()); 
      /* 
       <?xml version="1.0"?> 
       <myObject xmlns:w="http://www.whited.us" w:myOther="World"> 
        <w:myProp>Hello</w:myProp> 
       </myObject> 
      */ 
     } 
    } 
} 
+0

Ce morceau de code vraiment aidé. Merci Matthew. – Junto

+0

Content de pouvoir aider! –

+0

La question de l'OP concerne la désérialisation, pas la sérialisation. La méthode deserialize ne prend pas un paramètre XmlSerializerNamespaces. –

1
[XmlElement("someElement", Namespace="namespace")] 
public string SomeElement; 

Addendum: Assurez-vous que "namespace" est l'URI complète de l'espace de noms, pas seulement le préfixe.

Questions connexes