SimpleXML und xpath Problem

monoblock

Mitglied
Hallo!

Ich habe eine XML die wie folgt aussieht:
Code:
<root>
	<collection>   
		<pants>
		  	<model>
				<head><![CDATA[ABC]]></head> 
				<item>
					<pic><![CDATA[test.jpg]]></pic>
					<txt><![CDATA[1234]]></txt>
					<txt><![CDATA[1234]]></txt>
					<txt><![CDATA[1234]]></txt>  
					<txt><![CDATA[1234]]></txt> 
				</item> 
			</model>
		  	<model>
				<head><![CDATA[ABC2]]></head> 
				<item>
					<pic><![CDATA[test.jpg]]></pic>
					<txt><![CDATA[1234]]></txt>
					<txt><![CDATA[1234]]></txt>
					<txt><![CDATA[1234]]></txt>  
					<txt><![CDATA[1234]]></txt> 
				</item> 
			</model>
		</pants>
		<tops>
		  	<model>
				<head><![CDATA[ABC]]></head> 
				<item>
					<pic><![CDATA[test.jpg]]></pic>
					<txt><![CDATA[1234]]></txt>
					<txt><![CDATA[1234]]></txt>
					<txt><![CDATA[1234]]></txt>  
					<txt><![CDATA[1234]]></txt> 
				</item> 
			</model>
		  	<model>
				<head><![CDATA[ABC2]]></head> 
				<item>
					<pic><![CDATA[test.jpg]]></pic>
					<txt><![CDATA[1234]]></txt>
					<txt><![CDATA[1234]]></txt>
					<txt><![CDATA[1234]]></txt>  
					<txt><![CDATA[1234]]></txt> 
				</item> 
			</model>
		</tops>
	</collection>
</root>

In "Collection" (es kann mehrere Kollektionen geben) sind mehrer Teile (Pants/Tops) ein Teil kann mehrere Modelle haben und ein Modell kann halt mehrer Items, soweit so gut :) Die PHP Datei sieht so aus:

PHP:
<?php  
               $data = simplexml_load_file('data.xml');
               $path = $_GET['p']."/model";

           foreach ($data->xpath($path) as $model) {
	          echo "<li><h2>".$model->head."</h2></li>";
	    foreach ($data->xpath($path."/item") as $item) {
	         echo /* irgendwelche item inhalte */;     
	   }
            }
?>

Mit dem Parameter "p" kann man halt wählen welche Kollektion und welches Teil aus der Kollektion angezeigt werden soll. Das klappt auch :)

Nur jetzt kommt das Problem, die erste foreach-Schleife gibt mir schön die Headlines der einzelnen Modelle aus, die zweite foreach-Schleife allerdings nur die Items des ersten Modell, was läuft da schief? :(

Weiß jeman Rat? :)

Gruß
mono
 
Habe Problem beseitigt :) Muss so aussehen:

PHP:
<?php 
		foreach ($data->xpath($path) as $model) {
			echo "<li><h2>".$model->head."</h2></li>";
			foreach ($model->item as $item) {
				echo "<li><img src=\"img/".$_GET['p']."/thumbs/".$item->pic."\" /></li>";
				echo "<li>article: ".$item->txt[0]."</li>";
				echo "<li>style: ".$item->txt[1]."</li>";
				echo "<li>fit: ".$item->txt[2]."</li>";
				echo "<li>mat: ".$item->txt[3]."</li>";
				echo "<li class=\"last\"><a href=\"zoom.php5?c=".$item->txt[0]."\">more infos</a></li>";
			}
		}
?>
 
Zurück