Ich versuche, eine XPath-Abfragezeichenfolge herauszufinden, um die folgende Operation auszuführen.Relative XPath-Abfragen, die nach "Ebene" durchlaufen
ein XML-Dokument wie folgt gegeben:
<root>
<data>foo1</data>
<irrelevant-node>
<data>foo1</data>
</irrelevant-node>
<irrelevant-node />
<data>foo2</data>
<irrelevant-node />
<region>
<data>bar1</data>
<data>bar2</data>
<irrelevant-node />
<region>
<data>hello1</data>
<irrelevant-node />
<data>hello2</data>
<region>
<irrelevant-node />
<data>world1</data>
</region>
</region>
<irrelevant-node />
<data>bar3</data>
<irrelevant-node>
<data>foo1</data>
</irrelevant-node>
<irrelevant-node />
</region>
<irrelevant-node />
</root>
Ich möchte innerhalb eines <region>
nicht enthalten sind alle der <data>
Knoten greifen.
Dann möchte ich alle obersten <region>
Knoten greifen und den vorherigen Prozess auf ihnen wiederholen, relativ arbeiten.
Im Wesentlichen werde ich eine Reihe von Prozessen (PHP) auf den <data>
Knoten basierend auf ihren Inhalten durchführen und sie dann ersetzen. Die Knoten <region>
fungieren jedoch als eine Art Bereichsbegrenzer, und wenn ich alle <data>
Knoten in einem bestimmten Bereich bearbeitet habe, bewege ich mich auf Regionsebene nach unten. <data>
Knoten können in anderen irrelevanten Knoten verschachtelt sein.
Nicht sicher, ob XPath das beste Werkzeug dafür ist, und ich habe viel Mühe, dies zu beheben. Wie bereits erwähnt, verwende ich die PHP-Implementierung der DOM-Klassen.
die/root/region/irrelevant-node/data sollte in der zweiten Iteration auch mit "bar ..." "data" ausgewählt werden? –
** @ Alejandro **: Das ist richtig. Die erste Iteration sollte alle "foo" -Daten erfassen. Die zweite, "Bar". Dritte hallo, und so weiter. – Dan
Gute Frage, +1. Siehe meine Antwort für Erklärung und Lösung. :) –