2017-12-15 9 views
1

Ich versuche, Xpath-Ergebnis basierend auf einem Text in einem Element zurückzugeben.Xpath-Ergebnis gefiltert nach Text im Element

Dies ist mein aktueller Ausdruck: // S: Body/ns: 2hentArsrapporterResponse/Rückkehr/child :: * [text() = '2016']

aber es ist nur das das ein Element der Rückkehr: Element = '2016

Der Ausdruck sollte alle Elemente im Rückkehrknoten zurückgeben, wenn das Element den Text' 2016 'enthält. Kann mir bitte jemand mit dem richtigen Ausdruck helfen? enter image description here

Antwort

1

Es könnte hier einfacher sein, nur alle vollständigen übereinstimmenden <return> Knoten zurückzugeben. Da Sie sowieso alle Tags für Kinder haben möchten, ist es vermutlich kein Problem, ein zusätzliches Wrapper-Tag auf der Außenseite zu haben. Dies würde Ihnen auch eine bessere Möglichkeit bieten, Ihre Ausgabe organisiert zu halten. Zu diesem Zweck können wir nur filtern, um die <return> Knoten direkt:

//S:Body/ns:2hentArsrapporterResponse/return[antallVersjoner[text()='2016'] or ar[text()='2016'] or ...] 

Diese Lösung richtet sich offensichtlich auf die Auflistung aus alle möglichen Kinder Knoten, die passen könnten. Wenn Sie viele untergeordnete Knoten haben, ist dieser Ansatz möglicherweise nicht optimal.

+0

Vielen Dank! Es war nur Syntax, die falsch war, aber: // S: Body/ns: 2hentArsrapporterResponse/return [ar [text() = '2016]] gab alle Elemente zurück, wenn die enthaltenen Text' 2016 ':) –

+0

Es ist wirklich das beste nicht hier 'text()' zu verwenden. Verwenden Sie statt 'ar [text() =' 2016 '] '' ar [. = '2016'] ', und anstelle von '* [ar/text() =' 2016 ']' '' '[ar =' 2016 ']' '. Die Verwendung von 'text()' schlägt fehl, wenn Kommentare oder gemischter Inhalt vorhanden sind. –

Verwandte Themen