Condividi tramite


Panoramica degli assi LINQ to XML

Dopo aver creato un albero XML o aver caricato un documento XML in un albero XML, è possibile eseguire query su di esso per cercare elementi e attributi e recuperarne i valori. Per recuperare le raccolte vengono usati i metodi dell'asse, detti anche assi. Alcuni degli assi sono metodi delle classi XElement e XDocument che restituiscono raccolte IEnumerable<T>. Alcuni degli assi sono metodi di estensione della classe Extensions. Gli assi implementati come metodi di estensione operano sulle raccolte e restituiscono raccolte.

Come descritto in Panoramica della classe XElement, un oggetto XElement rappresenta il nodo di un unico elemento. Il contenuto di un elemento può essere semplice o complesso (talvolta definito contenuto strutturato). Un elemento semplice può essere vuoto o può contenere un valore. Se il nodo include contenuto strutturato, è possibile usare i diversi metodi dell'asse per recuperare enumerazioni di elementi discendente. I metodi dell'asse usati più di frequente sono Elements e Descendants.

Oltre ai metodi dell'asse, che restituiscono raccolte, sono disponibili altri due metodi usati frequentemente nelle query LINQ to XML. Il metodo Element restituisce un singolo oggetto XElement. Il metodo Attribute restituisce un singolo oggetto XAttribute.

Per molti scopi, le query LINQ costituiscono il modo più potente per esaminare un albero, estrarre dati da esso e trasformarlo. Le query LINQ operano su oggetti che implementano IEnumerable<T>, mentre gli assi LINQ to XML restituiscono IEnumerable<T> di raccolte XElement e IEnumerable<T> di raccolte XAttribute. Tali raccolte sono necessarie per l'esecuzione delle query.

Oltre ai metodi dell'asse che recuperano raccolte di elementi e attributi, sono disponibili altri metodi dell'asse che consentono di scorrere l'albero con maggior dettaglio. Ad esempio, anziché gestire elementi e attributi, è possibile operare sui nodi dell'albero. I nodi costituiscono un livello di granularità più preciso rispetto a elementi e attributi. Quando usano i nodi, è possibile esaminare commenti XML, nodi di tipo text, istruzioni di elaborazione e altro ancora. Questa funzionalità è ad esempio utile per chi intende scrivere il codice per un elaboratore di testo e desidera salvare i documenti in formato XML. Tuttavia, la maggior parte dei programmatori XML è interessata principalmente a elementi, attributi e ai relativi valori.

Metodi per il recupero di una raccolta di elementi

Di seguito sono riepilogati i metodi della classe XElement (o delle relative classi di base) che vengono chiamati su un oggetto XElement per restituire una raccolta di elementi.

metodo Descrizione
XNode.Ancestors Restituisce un IEnumerable<T> di XElement dei progenitori dell'elemento. Un overload restituisce un IEnumerable<T> di XElement dei progenitori per i quali è stato specificato XName.
XContainer.Descendants Restituisce un IEnumerable<T> di XElement dei discendenti dell'elemento. Un overload restituisce un IEnumerable<T> di XElement dei discendenti per i quali è stato specificato XName.
XContainer.Elements Restituisce un IEnumerable<T> di XElement degli elementi figlio dell'elemento. Un overload restituisce un IEnumerable<T> di XElement degli elementi figlio per i quali è stato specificato XName.
XNode.ElementsAfterSelf Restituisce un IEnumerable<T> di XElement degli elementi che seguono l'elemento corrente. Un overload restituisce un IEnumerable<T> di XElement degli elementi che seguono l'elemento per i quali è stato specificato XName.
XNode.ElementsBeforeSelf Restituisce un IEnumerable<T> di XElement degli elementi che precedono l'elemento corrente. Un overload restituisce un IEnumerable<T> di XElement degli elementi che precedono l'elemento per i quali è stato specificato XName.
XElement.AncestorsAndSelf Restituisce un IEnumerable<T> di XElement dell'elemento e dei relativi progenitori. Un overload restituisce un IEnumerable<T> di XElement degli elementi per i quali è stato specificato XName.
XElement.DescendantsAndSelf Restituisce un IEnumerable<T> di XElement dell'elemento e dei relativi discendenti. Un overload restituisce un IEnumerable<T> di XElement degli elementi per i quali è stato specificato XName.

Metodo per il recupero di un singolo elemento

Il metodo seguente consente di recuperare un singolo elemento figlio da un oggetto XElement.

metodo Descrizione
XContainer.Element Restituisce il primo oggetto XElement figlio per il quale è stato specificato XName.

Metodo per il recupero di una raccolta di attributi

Il metodo seguente consente di recuperare gli attributi da un oggetto XElement.

metodo Descrizione
XElement.Attributes Restituisce un IEnumerable<T> di XAttribute di tutti gli attributi.

Metodo per il recupero di un singolo attributo

Il metodo seguente consente di recuperare un singolo attributo da un oggetto XElement.

metodo Descrizione
XElement.Attribute Restituisce l'oggetto XAttribute per il quale è stato specificato XName.