//
am Anfang eines XPath-Ausdrucks beginnt mit dem Dokumentstamm. Versuchen Sie ".//stuffChild". . ist eine Kurzform für self :: node(), die den Kontext für die Suche festlegt, und // ist eine Abkürzung für die untergeordnete Achse.
So haben Sie:
XmlNode stuffChild = stuff.SelectSingleNode(".//stuffChild");
was übersetzt:
xmlnode stuffChild = stuff.SelectSingleNode ("self :: node()/Nachkomme :: stuffChild");
xmlNode stuffChild = stuff.SelectSingleNode("self::node()/descendant-or-self::stuffChild");
In dem Fall, dass das Kind-Knoten den gleichen Namen wie die Eltern haben könnte, können Sie die etwas ausführlichere Syntax verwenden wollen würde, die, um sicherzustellen, dass Sie wählen Sie erneut die Eltern nicht folgt:
xmlNode stuffChild = stuff.SelectSingleNode("self::node()/descendant::stuffChild");
beachten Sie auch, dass, wenn „stuffChild“ ein direkter Nachkomme von „Stoff“ ist, können Sie vollständig die Präfixe weglassen können, und wählen Sie einfach „stuffChild“.
XmlNode stuffChild = stuff.SelectSingleNode("stuffChild");
Die W3Schools Tutorial hat hilfreiche Informationen in einem einfachen Format zu verdauen.
.//foo ist ** nicht ** gleich mit dem Nachkommen :: foo und ist im Allgemeinen ** falsch ** Art der Auswahl von Nachkommen Knoten. Siehe http://stackoverflow.com/questions/453191/ –
Vielleicht haben Sie die., Die den Kontext des folgenden XPath setzt, verpasst? –
Bitte beachten Sie die Dokumentation für die // Abkürzung. .//foo übersetzt zu self :: node()/descendant-or-self :: node()/child :: stuffChild –