Wie finde ich einen XML-Knoten nach Pfad in Linq-to-XML?

Wenn ich den Pfad zu einem bestimmten Knoten als Zeichenfolge erhalte, kann ich diesen Knoten mithilfe von Linq / Method des XElement (oder XDocument) irgendwie leicht finden.

Es gibt so viele verschiedene Arten von XML-Objekten, dass es auch schön wäre, wenn Sie mir als zusätzlichen Bonus eine Anleitung dazu geben könnten, warum / wie verschiedene Typen verwendet werden.

BEARBEITEN: Ok, nachdem ich auf XPathSelectElement hingewiesen wurde. Ich probiere es aus, damit ich ihm die richtige Antwort geben kann. Dies ist das XML, das ich ausprobiere

 SomeName SomeType Alot  

und mein Code

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

Beachten Sie, dass meine Zeichenfolge von einem anderen Ort stammt. Ich denke, dass es nicht wörtlich sein muss (zumindest im Debug-Modus sieht es aus wie der oben genannte). Ich habe auch versucht, / vorne hinzuzufügen. Es gibt mir eine Nullreferenz.

Versuchen Sie es mit der XPathSelectElement Erweiterungsmethode von XElement . Sie können der Methode einen XPath-Ausdruck zur Auswertung übergeben. Zum Beispiel:

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

Bearbeiten :

Überprüfen Sie als Antwort auf Ihre Bearbeitung Ihren XPath-Ausdruck. Wenn Ihr Dokument nur dieses kleine Snippet enthält, funktioniert /Product/Name , da der führende Schrägstrich eine Suche vom Stamm des Dokuments aus ausführt:

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

Wenn es andere Produkte gibt und nicht der Stammknoten ist, müssen Sie den von Ihnen verwendeten XPath ändern.

Sie können auch XPathEvaluate verwenden

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

Gegeben das folgende XML:

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

Dies sollte den Inhalt vom Elementknoten drucken.