2016-10-20 1 views
1

Kann mir jemand den Unterschied zwischen den folgenden XPath-Ausdrücken sagen?Verwenden von '.' (Punkt oder Punkt) in einem XPath-Ausdruck

Ich habe versucht, beide zu verwenden, um ein XML-Dokument aus dem Dokumentenstamm zu analysieren, und ich bekomme die gleiche Antwort.

+1

Wie in DOS-Verzeichnissen ist '.' das aktuelle Verzeichnis. Diese XPaths sind identisch. Sie können sogar './Id /../ Id /./../ Id' und solche Sachen machen –

+0

Also' .' ist nur nützlich, wenn wir das Parsen aus einem anderen Kontext starten? Wenn ich auf '/ IntuitResponse/QueryResponse/Bill' traversiere, dann führe einen neuen Aufruf von' evaluate' durch, benutze den aktuellen 'Node' als Kontext,'./Id' funktioniert (es gibt die 'Id' des ersten'/IntuitResponse/QueryResponse/Bill/') aber'/Id' nicht. – Adam

+0

Mit '/' beginnst du wieder am Wurzelknoten, also benutze './Id' oder nur' Id' vom Bill-Knoten an. –

Antwort

5

Diese beiden XPaths sind äquivalent.

Die Abkürzung für self::node() (.) ist nützliche innerhalb eines Prädikats. Zum Beispiel

/IntuitResponse/QueryResponse/Bill/Id[. = 'abc'] 

würde wählen Sie nur die Id Elemente, deren String-Wert ist 'abc'.

Auch ist . nützlich, um einen relativen Pfad einzuführen. Zum Beispiel

./Id 

würde wählen nur diejenigen Id Elemente, die ein Kind des aktuellen Kontextknoten sind.

Verwandte Themen