LINQ to XML per utenti di XPath
In questo set di argomenti vengono illustrate varie espressioni XPath e gli equivalenti LINQ to XML.
In tutti gli esempi viene utilizzata la funzionalità di XPath in LINQ to XML resa disponibile dai metodi di estensione in System.Xml.XPath.Extensions. Negli esempi vengono eseguite sia l'espressione XPath che l'espressione LINQ to XML. Vengono quindi confrontati i risultati di entrambe le query, verificando che l'espressione XPath sia equivalente dal punto di vista funzionale alla query LINQ to XML. Poiché entrambi i tipi di query restituiscono nodi dalla stessa struttura ad albero XML, il confronto dei risultati delle query viene eseguito utilizzando l'identità referenziale.
In questa sezione
Argomento |
Descrizione |
---|---|
Viene fornita una panoramica delle analogie e differenze tra XPath e LINQ to XML. |
|
Viene illustrato un confronto tra l'asse degli elementi figlio XPath e il metodo LINQ to XML Element. L'espressione XPath associata è:"DeliveryNotes". |
|
Procedura: trovare un elenco di elementi figlio (XPath-LINQ to XML) |
Viene illustrato un confronto tra l'asse degli elementi figlio XPath e l'asse Elements LINQ to XML. L'espressione XPath associata è:"./*". |
Viene illustrato un confronto su come ottenere l'elemento radice con XPath e con LINQ to XML. L'espressione XPath associata è:"/PurchaseOrders". |
|
Viene illustrato un confronto su come ottenere gli elementi discendenti con un determinato nome con XPath e con LINQ to XML. L'espressione XPath associata è:"//Name". |
|
Procedura: applicare un filtro in base a un attributo (XPath-LINQ to XML) |
Viene illustrato un confronto su come ottenere gli elementi discendenti con un attributo con un valore specificato con XPath e con LINQ to XML. L'espressione XPath associata è:".//Address[@Type='Shipping']". |
Viene illustrato un confronto su come ottenere un elemento selezionando un attributo cui viene fatto riferimento dal valore di un altro elemento con XPath e con LINQ to XML. L'espressione XPath associata è:".//Customer[@CustomerID=/Root/Orders/Order[12]/CustomerID]". |
|
Procedura: trovare elementi in uno sazio dei nomi (XPath-LINQ to XML) |
Viene illustrato un confronto tra l'utilizzo della classe XPath XmlNamespaceManager e l'utilizzo della proprietà Namespace della classe XName LINQ to XML per utilizzare gli spazi dei nomi XML. L'espressione XPath associata è:"./aw:*". |
Procedura: trovare elementi di pari livello immediatamente precedenti (XPath-LINQ to XML) |
Viene illustrato un confronto tra l'asse preceding-sibling XPath e l'asse XNode.ElementsBeforeSelf figlio LINQ to XML L'espressione XPath associata è:"preceding-sibling::*". |
Procedura: trovare discendenti di un elemento figlio (XPath-LINQ to XML) |
Viene illustrato un confronto su come ottenere gli elementi discendenti di un elemento figlio con un determinato nome con XPath e con LINQ to XML. L'espressione XPath associata è:"./Paragraph//Text/text()". |
Procedura: trovare un'unione di due percorsi di posizione (XPath-LINQ to XML) |
Viene illustrato un confronto tra l'utilizzo dell'operatore di unione, |, in XPath e l'utilizzo dell'operatore di query standard Concat<TSource> in LINQ to XML. L'espressione XPath associata è:"//Category|//Price". |
Viene illustrato un confronto su come trovare tutti gli elementi di pari livello di un nodo con un nome specificato con XPath e con LINQ to XML. L'espressione XPath associata è:"../Book". |
|
Procedura: trovare un attributo dell'elemento padre (XPath-LINQ to XML) |
Viene illustrato un confronto su come spostarsi all'elemento padre e trovare un attributo associato con XPath e con LINQ to XML. L'espressione XPath associata è:"../@id". |
Procedura: trovare attributi di elementi di pari livello con un nome specifico (XPath-LINQ to XML) |
Viene illustrato un confronto su come trovare attributi specifici degli elementi di pari livello del nodo di contesto con XPath e con LINQ to XML. L'espressione XPath associata è:"../Book/@id". |
Procedura: trovare elementi con un attributo specifico (XPath-LINQ to XML) |
Viene illustrato un confronto su come trovare tutti gli elementi contenenti un attributo specifico con XPath e con LINQ to XML. L'espressione XPath associata è:"./*[@Select]". |
Procedura: trovare elementi figlio in base alla posizione (XPath-LINQ to XML) |
Viene illustrato un confronto su come trovare un elemento in base alla posizione relativa con XPath e con LINQ to XML. L'espressione XPath associata è:"Test[position() >= 2 and position() <= 4]". |
Procedura: trovare l'elemento di pari livello immediatamente precedente (XPath-LINQ to XML) |
Viene illustrato un confronto su come trovare l'elemento di pari livello immediatamente precedente di un nodo con XPath e con LINQ to XML. L'espressione XPath associata è:"preceding-sibling::*[1]". |