Mam taki xml:
<o id="329"> <cat> Biuro i firma/Biuro/Meble biurowe/Biurka </cat> <name> BIURKO JAY OLCHA </name> <attrs> <a name="Producent">producent</a> <a name="Kod_producenta">kod</a> </attrs> </o>
foreach($xml->children() as $child) { // $role = $child->attributes(); foreach($child as $key) { http://www.php.net/echo $key['id']; http://www.php.net/echo "<br>"; http://www.php.net/echo $key->cat; http://www.php.net/echo "<br>"; http://www.php.net/echo $key->name; http://www.php.net/echo "<br>"; http://www.php.net/echo $key['weight']; http://www.php.net/echo "<br>"; // foreach($key->imgs->children() as $imgs) { http://www.php.net/echo $imgs['url']; http://www.php.net/echo "<br>"; } foreach($key->attrs->attributes() as $attrs) { http://www.php.net/echo $attrs->a; http://www.php.net/echo "<br>"; } } }
Nie wiem co z tą pętlą (wygląda mi jakoś dziwnie, dużo odwołań do nieistniejących węzłów, brak sprawdzania, czy dany węzeł ma dzieci czy nie, tylko od razu foreach), ale by dobrać się do tego, co chcesz, to wystarczy:
http://www.php.net/echo $child->attrs[0]->a[0];
http://www.php.net/echo (string)$child->xpath("attrs/a[@name = 'Producent']")[0];
Co to znaczy nie działa?
Kod PHP, który wkleiłeś jest niekompletny. Założyłem, że już ładujesz ten plik do obiektu klasy SimpleXMLElement (na to wskazuje metoda children() oraz attributes() wykorzystane w pętli).
Napisz konkretnie co interesuje Ciebie z tego pliku (jakie dane chcesz sobie wydrukować na ekranie), bo pętla wskazuje, że wszystko, a pytasz tylko o producenta.
Chodzi o wyświetlenie tylko nazwy producenta dla konkretnego id?
PS usuń link do pliku, bo ci go wyszukiwarki zaindeksują niepotrzebnie.
$xml = simplexml_load_file("plik.xml"); foreach($xml->children() as $child) { http://www.php.net/echo (string)$child->xpath("group/attrs/a[@name = 'Producent']")[0]; http://www.php.net/echo $child->attrs[0]->a[0]; // $role = $child->attributes(); foreach($child as $key) { http://www.php.net/echo $key['id']; http://www.php.net/echo "<br>"; http://www.php.net/echo $key->cat; http://www.php.net/echo "<br>"; http://www.php.net/echo $key->name; http://www.php.net/echo "<br>"; http://www.php.net/echo $key['weight']; http://www.php.net/echo "<br>"; // foreach($key->imgs->children() as $imgs) { http://www.php.net/echo $imgs['url']; http://www.php.net/echo "<br>"; } } }
No to będzie to bardziej skomplikowana pętla, z której od razu najlepiej przypisywać do zmiennych konkretne elementy i je bindować w zapytaniu do bazy.
Tutaj ogólny zarys tego jak ja to widzę tak na szybko:
$xml = simplexml_load_file("plik.xml"); foreach ($xml->xpath('//o') as $child) { // strybuty elementu <o> foreach ($child->attributes() as $name => $attribute) { http://www.php.net/echo "$name: $attribute<br>"; } // kategoria http://www.php.net/echo 'cat: ' . $child->cat . '<br>'; // obrazki http://www.php.net/echo 'imgs/main: ' . $child->xpath('imgs/main')[0]->attributes()['url'] . '<br>'; foreach ($child->xpath('imgs/i') as $img) { http://www.php.net/echo 'imgs/i: ' . $img->attributes()['url'] . '<br>'; } // i reszta węzłów analogicznie jak na powyższych przykładach }
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)