2011-03-08 16 views
5

tengo una clase Foo (suponiendo adecuados using directivas)¿Forma más sencilla de deserializar una matriz/secuencia de objetos de XML con C#?

namespace Example 
{ 
    [XmlRoot("foo")] 
    class Foo 
    { 
     public Foo() {} 

     [XmlElement("name")] 
     public string Name; 
    } 
} 

Y un XmlSerializer puede tratar con XML como este para producir un objeto de tipo Foo

<foo> 
    <name>BOSS</name> 
</foo> 

¿Cuál es la cantidad mínima de trabajo Puedo hacer que XmlSerializer maneje XML de este formulario,

<foos> 
    <foo> 
     <name>BOSS</name> 
    </foo> 
    <foo> 
     <name>NOT A BOSS</name> 
    </foo> 
</foos> 

y produce una matriz de objetos Foo?

EDIT:

¿Cómo lo estoy haciendo para un solo Foo:

var xr = new XmlTextReader("foo.xml"); 
var xs = new XmlSerializer(typeof(Foo)); 
var a = (Foo) xs.Deserialize(xr); 

ejemplo Potencial de Foo[]

var xr = new XmlTextReader("foos.xml"); 
var xs = new XmlSerializer(typeof(Foo[])); 
var a = (Foo[]) xs.Deserialize(xr); 
+0

¿Ya ha escrito algún código que utilice el XmlSerializer? – RQDQ

+0

@RQDQ Agregué algunos ejemplos de cómo lo estoy haciendo para un solo artículo, y cómo creo que podría suceder con una matriz de ellos. –

Respuesta

5

A lo mejor de mi conocimiento de la más simple. Añadiendo otra clase Foos y eliminando la etiqueta xmlroot de la clase Foo.

namespace Example 
{ 
    [XmlRoot("foos")]  
    class Foos 
    { 
     public Foos() {} 

     [XmlElement("foo")] 
     public List<Foo> FooList {get; set;} 
    } 
} 
Cuestiones relacionadas