Introduzione a LINQ

di: Giuseppe Marchi     20 Febbraio 2008

LINQ to XML

L'implementazione di LINQ per la gestione di dati in formato XML ci consente di compiere le normali operazioni di selezione, creazione e cancellazione di nodi, ricerca di valori, creazione di nuovi documenti e modifiche a documenti già esistenti (chiaramente in formato XML) utilizzando una sintassi molto chiara e che diminuisce notevolmente il numero di righe di codice da scrivere.

LINQ to XML è un vero e proprio framework per l'accesso e la gestione delle informazioni in formato XML con completo supporto sia alle funzionalità DOM che a quelle definite dai linguaggi XPath e XQuery, il tutto integrato all'interno di un modello unico di programmazione basato sulla nuova sintassi LINQ e sulle nuove funzionalità inserite all'interno dei linguaggi di programmazione di alto livello della nuova versione del .NET Framework.

Le operazioni che siamo in grado di compiere attraverso questo nuovo modello sono più o meno le stesse messe a disposizione dal namespace System.Xml, con la differenza però che queste operazioni vengono esplicitate attraverso una nuova sintassi, più semplice ed intuitiva. Con LINQ to XML, possiamo infatti:

  • caricare informazioni in formato XML in memoria.
  • Creare nuovi alberi XML.
  • Inserire, modificare o cancellare nodi da alberi XML in memoria.
  • Salvare le informazioni create o gestite in memoria su file.

Il namespace di riferimento per queste nuove funzionalità è System.Xml.Linq, che contiene nuove classi per rappresentare documenti, elementi, attributi, nomi e in generale informazioni presenti nei documenti XML e per mantenere tali dati in memoria.

La novità che salta subito all'occhio utilizzando queste nuove classi è che possiamo rappresentare ogni singolo oggetto di un documento XML, senza dover creare il contesto che rappresenta l'intero documento XML, al contrario invece di quanto succede utilizzando DOM, in cui prima di poter operare su qualsiasi elemento dobbiamo prima caricare l'interno albero XML. Per manipolare un singolo elemento, ci basta classe XElement, senza dover per forza definire il documento XML cui questo elemento appartiene.

Vediamo, per esempio, come cambia la selezione di informazioni su un documento XML (in questo caso un feed RSS) con LINQ to XML.

Selezionare tutti gli elementi di un RSS (C#)

XDocument rss = XDocument.Load("http://www.peppedotnet.it/Blog/Rss.aspx");

var posts = from b in rss.Descendants("item")
            select new
            {
                Title = b.Element("title").Value,
                Link = b.Element("link").Value,
                PubDate = Convert.ToDateTime(b.Element("pubDate").Value)
            };

foreach (var post in posts)
{
    Console.WriteLine(post.Title);
    Console.WriteLine("[{1}] {0}", post.Link, post.PubDate);
}

Selezionare tutti gli elementi di un RSS (VB.NET)

Dim rss As XDocument = XDocument.Load("http://www.peppedotnet.it/Blog/Rss.aspx")

Dim posts = From b In rss.Descendants("item") _
            Select Title = b.Element("title").Value, _
                   Link = b.Element("link").Value, _
                   PubDate = Convert.ToDateTime(b.Element("pubDate").Value)

For Each post In posts
    Console.WriteLine(post.Title)
    Console.WriteLine("[{1}] {0}", post.Link, post.PubDate)
Next

L'accesso alle informazioni è diventato molto semplice; per la lettura di un feed RSS in pratica, abbiamo dovuto scrivere solamente 2 righe di codice!

Tramite una query LINQ abbiamo selezionato tutti gli elementi <item> del feed scelto; sfruttando i tipi anonimi possiamo gestire i dati ritornati dalla query di selezione attraverso una collezione di oggetti tipizzati (la variabile post infatti, ha le proprietà Title, Link e PubDate fornite dal tipo anonimo creato in fase di selezione).

Anche in questo caso, non dobbiamo limitarci a vedere LINQ to XML solamente come un linguaggio per la semplice selezione di informazioni da documenti XML. Le possibili operazioni sono limitate solamente dalla fantasia.

Guide ASP.Net

Guida Windows Azure Code Snippets

Le migliori pratiche per far girare le applicazioni "in the cloud",...

Guida ASP.NET MVC Best Practices

Un workflow dettagliato e ricco di suggerimenti pratici per...

Guida ASP.NET Starter Kit

Un modo semplice per imparare ad utilizzare le tecnologie Microsoft...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Progettazione database

11 Maggio 2012 a Milano
Disponibilità: 6 Posti

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto