Convertire una tabella XML in classi con LINQ



Dopo il mio post su come serializzare una classe con LINQ oggi voglio presentarvi il processo inverso, ovvero come popolare una classe o una lista di classi a partire da un file XML.

Per il nostro esempio supponiamo di avere il file xml che contiene l’elenco delle regioni italiane di voler convertire tali dati in una lista di oggetti C#.

Supponiamo che il nostro file xml sia cosi strutturato:

<regioni>
<regione>
<codRegione>02</codRegione>
<descRegione>BASILICATA</descRegione>
</regione>
<regione>
<codRegione>03</codRegione>
<descRegione>CALABRIA</descRegione>
</regione>
<regione>
<codRegione>04</codRegione>
<descRegione>CAMPANIA</descRegione>
</regione>
<regione>
<codRegione>05</codRegione>
<descRegione>EMILIA ROMAGNA</descRegione>
</regione>
<regione>
<codRegione>06</codRegione>
<descRegione>FRIULI V. GIULIA</descRegione>
</regione>
...
</regioni>

Sarà quindi necessario definire la classe Regione che conterrà i dati della singola regione nel seguente modo:


public class Regione
{
public String codRegione { get; set; }
public String descRegione { get; set; }
}

Con queste premesse vediamo ora come, sfruttando la potenza di LINQ, sia possibile popolare una lista di regioni a partire dal file xml:


public static List<regione> popolaRegioni(string nomeFileXml)
{
List<regione> lstRegioni = new List<regione>();


var regions = from p in            XElement.Load(nomeFileXml).Elements("regioni").Elements("regione")
orderby (string)p.Element("descRegione") ascending
select new Regione
{
codRegione = (string)p.Element("codRegione"),
descRegione = (string)p.Element("descRegione")
};

foreach (var reg in regions)
lstRegioni.Add(reg);


return lstRegioni;
}

Annunci sponsorizzati:
Condividi su Facebook Condividi su Twitter!
Pinterest