Hallo zusammen,
Ich habe folgende XML-Struktur, in der ich alle <image> suche, wenn das <item> eine bestimmte @number hat, sowie die <page> eine bestimmte Nummer hat. Leider kommt immer ein leeres Array raus:
Wie man sieht kann <item> ein oder mehrere <image> haben...
Ich versuche das gerade mit 3 Schleifen ineinander:
die Funktion dazu sieht folgendermaßen aus:
Ich würde mich freuen, wenn mir jemand helfen könnte - ich teste hier schon ne Weile rum mit den verschiedensten XPATH-Expressions, aber bekomme immer leere Arrays zurück. Danke im Voraus.
Gruss
Dom
Ich habe folgende XML-Struktur, in der ich alle <image> suche, wenn das <item> eine bestimmte @number hat, sowie die <page> eine bestimmte Nummer hat. Leider kommt immer ein leeres Array raus:
PHP Code:
<itemList>
<page number="8 1">
<item number="1">
<image number="1">/Users/admin/Desktop/haus1.jpg</image>
<image number="2">/Users/admin/Desktop/haus2.jpg</image>
<image number="3">/Users/admin/Desktop/haus3.jpg</image>
</item>
<item number="2">
<image number="1">/Users/admin/Desktop/haus1.jpg</image>
</item>
</page>
<page number="2 3">
....
Ich versuche das gerade mit 3 Schleifen ineinander:
PHP Code:
// hier hole ich alle @number einer bestimmten <page>
$counterItemsInPage = getXMLContent($genXML, "//page[@number = '" . $realPages[0] . ' ' . $realPages[1] . "']/item/@number");
//hier erhalte ich ein Ergebnis
echo '<pre>'; var_dump($counterItemsInPage); echo '</pre>';
// durch max($counterItemsInPage) weiß ich nun wieviel <item> in der <page> sind (count würde auch gehen)
for ($c = 1; $c <= max($counterItemsInPage); $c++) {
// jetzt will ich alle Nummern der <image> aus dem <item> pro <page>
$itemsImagesNumbersWithinSpread = getXMLContent($genXML, "//image/@number/../../page[@number = '" . $realPages[0] . ' ' . $realPages[1] . "']/item[number='" . $c . "']");
// hier ist das Array = NULL
echo '<pre>'; var_dump($itemsImagesNumbersWithinSpread); echo '</pre>';
foreach ($itemsImagesNumbersWithinSpread as $t => $counter2) {
// hole alle Bildpfade der Bilder, die in einem <item> auf einer best. <page> sind
$itemsImagesWithinSpread = getXMLContent($genXML, "//page[@number = '" . $realPages[0] . ' ' . $realPages[1] . "']/item[number='" . ($t + 1) . "']/image[number='" . $t . "'");
// das Array ist dann natürlich auch = NULL
echo '<pre>'; var_dump($itemsImagesWithinSpread); echo '</pre>';
PHP Code:
function getXMLContent($doc, $tagPath) {
$targets = new DOMXpath($doc);
$targetDatas = $targets->query($tagPath);
if (!is_null($targetDatas)) {
$result = array();
foreach ($targetDatas as $targetData) {
$nodes = $targetData->childNodes;
foreach ($nodes as $node) {
$value = $node->nodeValue;
$result[] = $value;
}
}
return $result;
}
}
Gruss
Dom
Comment