/ / simplexml_load_file: jeśli główny znacznik zawiera coś - php, xml, filter, simplexml

simplexml_load_file: jeśli główny tag zawiera coś - php, xml, filter, simplexml

Nie jestem pewien co do tytułu, postaram się wyjaśnić w następnych wierszach.

Mam taki plik XML:

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

Udało mi się iterować przez mój xml, aby uzyskać wszystkie dane. Ale chcę mieć możliwość filtrowania według zatok. Chcę zrobić coś takiego

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

}

Odpowiedzi:

1 dla odpowiedzi № 1

Możesz użyć XPath do pobrania tylko samochodów z wnęką 0 ...

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

Instrukcja XPath jest po prostu - dowolna CAR element, który ma atrybut bay z wartością 0 w nim.

Jeśli potrzebujesz dostępu do atrybutów w innych przypadkach, z SimpleXML - masz do nich dostęp tak, jakby były elementami tablicy, więc byłoby $car["bay"] w kodzie, który miałeś powyżej.