2009-10-09 12 views
5

Sto semplicemente dando il tocco finale al mio deserializer Zthes format (System.Xml.Serialization) che utilizza lo spazio dei nomi "dc" nell'elemento "thes". Tutti gli elementi "termine" stanno deserializzando bene perché non hanno spazio dei nomi, ma non riesco a capire come dire al deserializzatore che gli elementi "questi" hanno uno spazio dei nomi.Come deserializzare gli spazi dei nomi XML in C# (System.Xml.Serialization)?

Ecco cosa sto cercando di fare (che non funziona) quindi spero che qualcuno possa darmi la sintassi corretta.

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

risposta

8

Ecco un rapido esempio per voi ...

[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

questo pezzo di codice veramente aiutato. Grazie Matteo. – Junto

+0

Felice di poterti aiutare! –

+0

La domanda dell'OP riguarda la deserializzazione, non la serializzazione. Il metodo deserialize non accetta un parametro XmlSerializerNamespaces. –

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

Addendum: Assicurarsi che "namespace" è il pieno URI dello spazio dei nomi, non solo il prefisso.

Problemi correlati