Hallo alle zusammen,
ich versuche mich gerade in XPath einzuarbeiten, allerdings bin ich auf eins, zwei Probleme gestoßen. Folgende XML-Datei liegt mir vor:
Mein Ziel ist es diese XML-Datei gezielt nach den gruppen zu filtern, und dann das Array (bspw. für die Gruppe CH1 und EN1) zurückzugeben, sodass am ende nur noch folgendes dasteht (natürlich dann nicht in Form einer XML, sondern in einem Array):
dazu hatte ich versucht folgende xpath-Anweisung zu verwenden:
so bekomme ich zunächst nur folgendes Array zurückgeliefert:
soweit sogut, allerdings habe ich ja jetzt nicht mehr den bezug zum tag und der Zeile... eigentlich hatte ich da die ancestor-or-self Funktion gedacht, allerdings erscheinen dann komischerweise wieder alle Einiträge der XML... woran könnte das liegen? Wo ist mein Fehler? und dritte und letzte Frage: kann ich diese Abfrage noch weiter vereinfachen?
Ich freue mich schon auf eure Antworten.
Viele Grüße
L&J
ich versuche mich gerade in XPath einzuarbeiten, allerdings bin ich auf eins, zwei Probleme gestoßen. Folgende XML-Datei liegt mir vor:
Code:
<haupt> <zeile> <tag1> <raum>029</raum> <gruppe>CH1</gruppe> </tag1> <tag1> <raum>204</raum> <gruppe>EN1</gruppe> </tag1> <tag1> <raum>139</raum> <gruppe>EN2</gruppe> </tag1> <tag1> <raum>213</raum> <gruppe>GE1</gruppe> </tag1> </zeile> <zeile> <tag1> <raum>029</raum> <gruppe>CH1</gruppe> </tag1> <tag1> <raum>204</raum> <gruppe>EN1</gruppe> </tag1> <tag1> <raum>139</raum> <gruppe>EN2</gruppe> </tag1> <tag1> <raum>213</raum> <gruppe>GE1</gruppe> </tag1> <tag1> <raum>214</raum> <gruppe>GE2</gruppe> </tag1> <tag2> <raum>213</raum> <gruppe>MA2</gruppe> </tag2> <tag2> <raum>029</raum> <gruppe>CH1</gruppe> </tag2> </zeile> </haupt>
Code:
<haupt> <zeile> <tag1> <raum>029</raum> <gruppe>CH1</gruppe> </tag1> <tag1> <raum>204</raum> <gruppe>EN1</gruppe> </tag1> </zeile> <zeile> <tag1> <raum>029</raum> <gruppe>CH1</gruppe> </tag1> <tag1> <raum>204</raum> <gruppe>EN1</gruppe> </tag1> <tag2> <raum>029</raum> <gruppe>CH1</gruppe> </tag2> </zeile> </haupt>
Code:
$gefiltert = $xml->xpath("/haupt/zeile/tag1[gruppe='CH1']");
Code:
[0] => SimpleXMLElement Object ( [raum] => 029 [gruppe] => CH1 ) [1] => SimpleXMLElement Object ( [raum] => 204 [gruppe] => EN1 ) [2] => SimpleXMLElement Object ( [raum] => 029 [gruppe] => CH1 ) [3] => SimpleXMLElement Object ( [raum] => 204 [gruppe] => EN1 )
Ich freue mich schon auf eure Antworten.
Viele Grüße
L&J
Comment