ThomasM: XPath: Wie kann ich den Text zwischen zwei Knoten auslesen?

Beitrag lesen

Hallo XPath-Anfänger,

ich habe ein XML-Dokument mit der folgenden Struktur:

<AAA>
   <BBB id="0"/>
   Hallo
   <BBB id="5"/>
   Welt
   <BBB id="9"/>
</AAA>

Hat diese Struktur einen besonderen Grund? Die Textknoten könnten IMHO sinnvoller innerhalb der BBB-Elemente platziert werden.

Nun möchte ich einen Textknoten zwischen zwei bestimmten BBB-Knoten auslesen, deren id gegeben ist. Also zum Beispiel den Text zwischen dem BBB-Knoten mit der id 5 und dem mit der id 9.

Machbar ist das durchaus, z. B. so:

AAA//text()[preceding-sibling::BBB[@id='5'] and following-sibling::BBB[@id='9']]

Zur Vermeidung der Umbrüche ggf. noch normalize-space(...) anwenden.

Grüße,
Thomas