XPath: Wie kann ich den Text zwischen zwei Knoten auslesen?
XPath-Anfänger
- xml
Hallo,
ich habe ein XML-Dokument mit der folgenden Struktur:
<AAA>
<BBB id="0"/>
Hallo
<BBB id="5"/>
Welt
<BBB id="9"/>
</AAA>
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.
Wie kann ich das anstellen?
Vielen Dank für Eure Hilfe!
Hi!
ich habe ein XML-Dokument mit der folgenden Struktur:
<AAA>
<BBB id="0"/>
Hallo
<BBB id="5"/>
Welt
<BBB id="9"/>
</AAA>
Ist das mit den leeren Elementen /so/ gewollt?
off:PP
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
Hallo Thomas,
vielen Dank für die schnelle Hilfe!
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.
Die XML-Dokumente, die ich verwende, habe ich nicht selbst erstellt, sondern so bekommen - ich hätte so etwas wie <BBB id="x">Hallo</BBB> eigentlich auch geschickter gefunden, und auch wesentlich einfacher mit XPath zu handhaben... aber zum Glück geht es ja auch so, also nochmals vielen Dank!