IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Jak získat udaje z xml, které nejsou ve array

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Crrack
Člen
Avatar
Crrack:26.2.2017 9:53

Zdravím,
Potřeboval bych poradit už pěkně dlouhou dobu si lámu hlavu s tím, jak získat z mojeho xml souboru kategorii a sub-kategorii.
Mám tento xml soubor:

<?xml version='1.0' encoding='UTF-8'?>
<data>
  <category name="test-cat1">
    <subcat name="test-subcat1">
      <item name="test-name1">data1</item>
      <item name="test-name2">data2</item>
      <item name="test-name3">data3</item>
    </subcat>
    <subcat name="test-subcat2">
      <item name="test-name4">data4</item>
      <item name="test-name5">data5</item>
      <item name="test-name6">data6</item>
    </subcat>
  </category>
  <category name="test-cat2">
    <subcat name="test-subcat3">
      <item name="test-name7">data7</item>
      <item name="test-name8">data8</item>
      <item name="test-name9">data9</item>
    </subcat>
    <subcat name="test-subcat4">
      <item name="test-name10">data10</item>
      <item name="test-name11">data11</item>
      <item name="test-name12">data12</item>
    </subcat>
  </category>
</data>

A takový to kód, který by měl zobrazit všechny položky:

<?php

 $xml = simplexml_load_file('test.xml');

  foreach($xml->xpath('//item') as $item){

    echo $item . '<br>';
    echo $item['name'] . '<br>';
    echo /*item category*/;
    echo /*item sub-category*/;
    echo "<br>";

  }

?>

Jak můžu přiřadit k item kategorii, když nikde v array co dostanu není ?
Za jakoukoliv pomoc bych byl moc vděčný. Protože už jsem nad tím strávil dost času a na netu jsem nic nenašel.

Děkuji moc za jakoukoliv radu.

 
Odpovědět
26.2.2017 9:53
Avatar
Tomáš Novotný:26.2.2017 15:11

třeba pomocí iterace lze použít toto dirty řešení :-O jistě existuje čistší přístup, ale toto by mělo fungovat :-)

<?php
$xml = simplexml_load_file('test.xml');

foreach( $xml->children() as $category ) {
        echo $category['name'] . "<br>";
        foreach( $category->children() as $subcat ) {
                echo "- " . $subcat['name'] . "<br>";
                foreach( $subcat->children() as $item ) {
                        echo "++ " . $item['name'] . "<br>";
                }
        }
}

?>
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
26.2.2017 15:11
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.