2009-10-09 22 views
5

Acabo de poner los toques finales a mi deserializador Zthes format (System.Xml.Serialization) que utiliza el espacio de nombres "dc" en el elemento "thes". Todos los elementos del "término" se deserializan bien porque no tienen espacio de nombre pero no puedo descifrar cómo decirle al deserializador que los elementos "tes" tienen un espacio de nombre.¿Cómo deserializo los espacios de nombres XML en C# (System.Xml.Serialization)?

Esto es lo que estoy tratando de hacer (que no está funcionando) así que espero que alguien pueda darme la sintaxis adecuada.

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

Respuesta

8

Aquí hay una muestra rápida para usted ...

[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

Esta pieza de código realmente ayudó. Gracias Matthew. – Junto

+0

¡Me alegro de poder ayudar! –

+0

La pregunta de OP es sobre deserialización, no serialización. El método deserialize no toma el parámetro XmlSerializerNamespaces. –

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

Adición: Asegúrese de que "nombre" es la URI completa del espacio de nombres, no sólo el prefijo.

Cuestiones relacionadas