7 messaggi dal 10 ottobre 2012
Ciao a tutti,
ho necessita' di deserializzare un xml che mi ritorna un webservice ma non so come fare.
L'xml tornato contiene solo una ed una sola riga (un solo record):

    public class Customer
    {
        public string caCustomerId { get; set; }
        public string primaryPosRef { get; set; }
        public string active { get; set; }
        public string firstName { get; set; }
        public string lastName { get; set; }
        public string postalCode { get; set; }
        public string city { get; set; }
        public string county { get; set; }
        public string addressline1 { get; set; }
        public string addressline2 { get; set; }
        public string organizationName { get; set; }
        public string piva { get; set; }
    }



Grazie a tutti per l'aiuto.
Davide.
Modificato da dardizzola il 13 novembre 2013 12.42 -
Modificato da dardizzola il 13 novembre 2013 12.45 -
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
normalmente la deserializzazione da Xml si realizza con la classe XmlSerializer ma in questo caso non mi sembra fattibile perché il tuo documento somiglia più ad un CSV, dove l'appartenenza di ogni valore ad una data colonna dipende dal suo ordinale anziché dal nome del tag o dell'attributo contenitore.

Invece, in questo caso potresti usare LINQ to XML per proiettare ogni nodo Row sul tuo tipo Customer. Qui trovi una videoguida di Stefano Mostarda che ti mostra per l'appunto come fare
http://media.aspitalia.com/screencast/LINQ-to-XML-introduzione.media
Al minuto 10:00 puoi vedere come, attraverso la classe XDocument ed una query LINQ, Stefano interroghi un documento XML per estrarre tutte le persona dal nodo persone. Tu, analogamente, dovrai estrarre tutte le Row dal nodo Rows e proiettarle su Customer.

Questa operazione ti produrrà una lista di Customer. Tu dovrai semplicemente ottenere il primo grazie all'extension method .First(). Queste sono tutte cose supportate nel .NET Framework 3.5.

Questa soluzione però presuppone che il numero e l'ordine delle colonne nell'XML sia sempre lo stesso. Se le colonne possono tornarti mescolate, allora non possiamo più dare per scontato che la terza colonna rappresenti, ad esempio, il nome del cliente.
In questo caso dovrai passare in rassegna anche le RSColumn, aggiungere i loro nomi ad una lista e poi usare la reflection per assegnare a runtime il valore di ogni colonna alla sua rispettiva proprietà su un nuovo oggetto Customer.

Chiarisci se le colonne sono sempre le stesse o se possono cambiare.

ciao,
Moreno

Enjoy learning and just keep making
7 messaggi dal 10 ottobre 2012
Ciao,
per caso solo oggi scopro la tua esauriente risposta e non capisco perché non mi sia arrivata la notifica per email!

Dopo aver sbattuto la testa diversi giorni su come risolvere, alla fine ho trovato questo tool http://sourceforge.net/projects/simplexmltocode che ha generato le classi, ed il tutto ha funzionato perfettamente al "primo colpo" !!

Ti ringrazio comunque moltissimo per la risposta.
ciao,
Davide.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.