2016-10-19 1 views
0

Ich habe eine Liste von XPath-Ausdrücke mit gemeinsamen Pfad-Präfixe. Zum Beispiel könnte ich so etwas wie:Mehrere .evaluate Anrufe, XPath Java

Elements/Bills/Amount/USD 
Elements/Id 

Was will ich tun ist, zunächst alle Elemente Knoten zu erhalten, dann, für einen bestimmten Knoten, zu überprüfen, ob es die beiden Datenpunkte enthält ich will (ich muss Überprüfen Sie jeden Knoten, beginnend von oben). Etwas wie node.get(/Bills/Amount/USD), node.get(/Id) wäre perfekt. Doch nach dem Kompilieren und Ausführen von Elements (xPath.compile(Elements).evaluate(doc, XPathConstants.NODESET);) Ich bin mir nicht sicher, was. Zu evaluate()

Antwort

0

Pass node in die nachfolgenden Anrufe zu tun. Der erste Aufruf der doc als „Kontext“ wurde mit (https://msdn.microsoft.com/en-us/library/ms256199(v=vs.110).aspx), was bedeutet, die Wurzel der xml doc wurde den Kontext (im Grunde, wo die Suche beginnt).

Sobald ich einen Knoten hatte ich bestehen nur in Betracht gezogen, dass der Rest des Weges für meinen nächsten Anruf in zu evaluate().

den ersten Anruf (gab die Liste von Elements zurück):

xPath.compile("Elements").evaluate(doc, XPathConstants.NODESET) 

Der zweite Anruf (alle USD Elemente zurückgegeben, die Kinder des aktuellen Knotens Element) sind:

xPath.compile("./Bills/Amount/USD").evaluate(node, XPathConstants.NODESET)