2012-07-02 22 views
8

Duplicar posible:
How to Deserialize XML documentParse cadena XML a la clase en C#?

Supongamos que tengo una clase que se define como esto en C#:

public class Book 
{ 
    public string Title {get; set;} 
    public string Subject {get; set;} 
    public string Author {get; set;} 
} 

Supongamos que tengo XML que tiene este aspecto :

<Book> 
    <Title>The Lorax</Title> 
    <Subject>Children's Literature</Subject> 
    <Author>Theodor Seuss Geisel</Author> 
<Book> 

Si quisiera instanciar una instancia de la clase Book utilizando este XML, la única manera que conozco de hacerlo es utilizar la clase de documento XML y enumerar los nodos XML.

¿El .NET Framework proporciona alguna forma de creación de instancias de clases con código XML? Si no, ¿cuáles son las mejores prácticas para lograr esto?

+0

Lo siento por el duplicado. Gracias por las respuestas! :-) –

Respuesta

37

Usted sólo puede usar la serialización XML para crear una instancia de la clase del XML:

XmlSerializer serializer = new XmlSerializer(typeof(Book)); 
using (StringReader reader = new StringReader(xmlDocumentText)) 
{ 
    Book book = (Book)(serializer.Deserialize(reader)); 
} 
+0

+1 para la solución corta y ordenada – cppanda

+0

Esto está funcionando muy bien en mi proyecto. ¡Gracias! –

+0

Simple y directo al punto ... genial ... Gracias :) – AKS

8

Hay varias maneras de deserializar un documento XML - XmlSerializer la vida en System.Xml.Serialization y el más nuevo DataContractSerializer que está en System.Runtime.Serialization.

Ambos requieren que decore los miembros de su clase con atributos que le dicen al serializador cómo operar (diferentes atributos para cada uno).