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.mediaAl 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