Come trovo un nodo XML per percorso in Linq-to-XML

Se ottengo il percorso di un nodo specifico come una stringa, posso trovare facilmente detto nodo utilizzando Linq / Method di XElement (o XDocument).

Ci sono così tanti diversi tipi di oggetti XML che sarebbe anche bello se, come bonus aggiuntivo, potessi indicarmi una guida sul perché / come usare diversi tipi.

EDIT: Ok, dopo essere stato indirizzato verso XPathSelectElement, ci sto provando, così posso dargli la risposta giusta, ma non riesco a farlo funzionare. Questo è l’XML che sto provando

 SomeName SomeType Alot  

e il mio codice

 string path = "Product/Name"; string name = xml.XPathSelectElement(path).Value; 

nota che la mia stringa viene da altrove quindi suppongo che non debba essere letterale (almeno nella modalità di debug appare come sopra). Ho anche provato ad aggiungere / in primo piano. Mi dà un riferimento nullo.

Prova a utilizzare il metodo di estensione XElement di XElement . È ansible passare al metodo un’espressione XPath per valutare. Per esempio:

 XElement myElement = rootElement.XPathSelectElement("//Book[@ISBN='22542']"); 

Modifica :

In risposta alla tua modifica, controlla la tua espressione XPath. Se il tuo documento contiene solo quel piccolo frammento, allora /Product/Name funzionerà mentre la barra principale esegue una ricerca dalla radice del documento:

 XElement element = document.XPathSelectElement("/Product/Name"); 

Se ci sono altri prodotti e non è il nodo radice, devi modificare l’XPath che stai utilizzando.

Puoi anche usare XPathEvaluate

 XDocument document = XDocument.Load("temp.xml"); var found = document.XPathEvaluate("/documents/items/item") as IEnumerable; foreach (var obj in found) { Console.Out.WriteLine(obj); } 

Dato il seguente xml:

 < ?xml version="1.0" encoding="utf-8" ?>       

Questo dovrebbe stampare i contenuti dal nodo degli oggetti.