2012-07-02 9 views
8

Eventuali duplicati:
How to Deserialize XML documentAnalizza la stringa XML per classificare in C#?

Supponiamo che ho una classe che si definisce come questo in C#:

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

Supponiamo che ho XML che assomiglia a questo :

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

Se desidero istanziare un'istanza della classe Book utilizzando questo XML, l'unico modo per farlo è utilizzare la classe Documento XML ed enumerare i nodi XML.

Il framework .net fornisce un modo per creare istanze di classi con codice XML? In caso contrario, quali sono le migliori pratiche per realizzare questo?

+0

Ci scusiamo per il duplicato. Grazie per le risposte! :-) –

risposta

37

Si può semplicemente utilizzare la serializzazione XML per creare un'istanza della classe dal XML:

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

+1 per la soluzione breve e pulita – cppanda

+0

Questo sta funzionando benissimo nel mio progetto. Grazie! –

+0

Semplice e dritto al punto..grande..Grazie :) – AKS

8

Ci sono diversi modi per deserializzare un documento XML - il XmlSerializer vivono in System.Xml.Serialization e il più recente DataContractSerializer che è in System.Runtime.Serialization.

Entrambi richiedono di decorare i membri della classe con attributi che indicano al serializzatore come operare (attributi diversi per ciascuno).