logo
23.12.2018 15:42
1
Dobrý den,

nedokáže mi někdo poradit, jak mám dostat XML feed heureky do tabulkové podoby? Jednoúrovňové XML problém není, ale mám probrém s parametry, které pak následně obsahují název parametru a jeho hodnotu. Toto se mi nedaří nijak dostat do klasické tabulky.

Děkuji za radu

Co se právě děje na Webtrhu?

23.12.2018 21:51
2
Čemu říkáte "klasická tabulka" nebo "tabulková podoba"? Pokud je XML flexibilní, udělejte si např. strukturu "název hodnoty | hodnota". A tam uložíte cokoliv.
24.12.2018 08:31
3
Původně odeslal shion.uzuki
Čemu říkáte "klasická tabulka" nebo "tabulková podoba"? Pokud je XML flexibilní, udělejte si např. strukturu "název hodnoty | hodnota". A tam uložíte cokoliv.

Klasická tabulka je ve formátu:
První řádek - hlavička
zbylé řádky - hodnoty

XML má formát:
shopitem
údaj1
/údaj1
údaj2
/údaj2
.
.
.
param
param1jméno
/param1jméno
param1hodnota
/param1hodnota
param2jméno
/param2jméno
param2hodnota
/param2hodnota
.
.
.
/shopitem

S xml jsem si radil tak, že jsem je naimportoval do accesu nebo do SQL, ale kvůli vnořenému parametru se mi to nedaří a ani acces si s tím neporadil.
25.12.2018 19:05
4
Kód:
$xml = simplexml_load_file('heureka01.xml'); // https://sluzby.heureka.cz/napoveda/ukazka-xml-feedu-obleceni/
$ATTRIBUTES = explode(' ', 'ITEM_ID PRODUCTNAME PRODUCT DESCRIPTION URL IMGURL IMGURL_ALTERNATIVE MANUFACTURER CATEGORYTEXT EAN PRODUCTNO PARAM DELIVERY_DATE DELIVERY ITEMGROUP_ID');
$SEPARATOR = "\t"; // nebo ";"
foreach ($xml as $item) {
    echo "SHOPITEM\n";
    foreach ($ATTRIBUTES as $attr) {
        if (isset($item->$attr)) 
            if ($attr == 'PARAM') {
                echo $SEPARATOR . $attr . "\n";
                foreach ($item->$attr as $subattr) {
                    echo $SEPARATOR . $SEPARATOR . $subattr->PARAM_NAME . $SEPARATOR . $subattr->VAL . "\n";
                }
            } else {
                $value = (array)$item->$attr; 
                echo $SEPARATOR . $attr . $SEPARATOR . (isset($value[0]) ? $value[0] : '') . "\n";
            }
    }    
}