SimpleXML auf Element mit bestimmten Wert zugreifen
Sarah
- php
Hallo, ich greife mit
$xml = simplexml_load_file(rawurlencode($xmlfile));
auf eine XML Datei zu und wenn ich diese ausgebe mit print_r($xml); erscheint folgendes (nur ein Ausschnitt, damit es nicht zu lang wird)
<CategoryList>
<NumResults>20</NumResults>
−
<Category>
<ID>1</ID>
<Name>Essen</Name>
<Area>pb</Area>
<Level>0</Level>
<Parent>0</Parent>
</Category>
−
<Category>
<ID>2</ID>
<Name>Getränke</Name>
<Area>pb</Area>
<Level>1</Level>
<Parent>1</Parent>
</Category>
−
<Category>
<ID>3</ID>
<Name>Süßigkeiten</Name>
<Area>pb</Area>
<Level>1</Level>
<Parent>1</Parent>
</Category>
Mit count($xml->Category); kann ich mir jetzt die Anzahl aller Category´s ausgeben lassen.
Aber wie kann ich mir jetzt z.B. nur die Anzahl aller Category´s ausgeben lassen wo Level = 1 ist? count($xml->Category->Level=1); funktioniert nicht.
Gruß
Sarah
Hallo,
du musst xpath verwenden. Dort kannst Du Bedinungen stellen.
http://php.net/manual/de/function.simplexml-element-xpath.php
Gruß
jobo
Hallo,
<?php
$xml_string=
'<?xml version="1.0"?>
<wurzel>
<CarInfo Code="1" Quantity="10"/>
<CarInfo Code="CodeWhereQuantityEq22" Quantity="22">
<abc>somevalueInAbc</abc>
</CarInfo>
<CarInfo Code="3" Quantity="23"/>
<CarInfo Code="4" Quantity="42"/>
<CarInfo Code="5" Quantity="33"/>
<CarInfo Code="6" Quantity="87"/>
</wurzel>';
// echo $xml_string;
$simple_xml = simplexml_load_string($xml_string);
// var_dump($simple_xml);
$query_string="//CarInfo[@Quantity=22]";
$node_list = $simple_xml->xpath($query_string);
var_dump($node_list);
echo $node_list[0]["Code"]."
";
echo $node_list[0]->abc;
Gruß
jobo