Sarah: SimpleXML auf Element mit bestimmten Wert zugreifen

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

  1. Hallo,

    du musst xpath verwenden. Dort kannst Du Bedinungen stellen.

    http://php.net/manual/de/function.simplexml-element-xpath.php

    Gruß

    jobo

    1. 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