2017-10-16 6 views
0

Je ne suis pas si sûr du titre, je vais essayer d'expliquer dans les lignes suivantes.simplexml_load_file: si la balise principale contient quelque chose

J'ai un fichier xml comme ceci:

<CAR park="3" id="1" bay="0"> 
    <SITE_ID>0</SITE_ID> 
    <SITE_NAME>Car Seller 1</SITE_NAME> 
    . . . 
</CAR> 

Je suis dans mon sucessfully itération xml pour obtenir toutes les données. Mais, je veux pouvoir filtrer par baies. Je veux faire quelque chose comme

$xml = simplexml_load_file('myfile.xml'); 
$x = 1; 
    foreach($xml as $car) { 
    if($car->bay == '0'){ 
     echo $car->SITE_ID; 
    $x++; 
    } 

    } 

Répondre

1

Vous pouvez utiliser XPath pour récupérer uniquement la baie 0 voitures ...

$bay0 = $xml->xpath('//CAR[@bay="0"]'); 
foreach ($bay0 as $car) { 
    echo $car->SITE_ID.PHP_EOL; 
} 

La déclaration XPath est tout simplement - tout élément CAR qui a un attribut bay avec le valeur 0 dedans. Dans le cas où vous auriez besoin d'accéder à des attributs dans d'autres cas, avec SimpleXML - vous y accédez comme s'ils étaient des éléments de tableau, donc ce serait $car['bay'] dans le code que vous aviez ci-dessus.

+0

Fonctionne très bien! Merci beaucoup pour l'explication! –