Workshop FORPSI Cloud rozptýlí vaše obavy z použití cloudu
Zobrazují se odpovědi 1 až 4 z 4

XML heureka do XLS nebo CSV

  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

  2. Co se právě děje na Webtrhu?
  3. Č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.

  4. Citace Původně odeslal shion.uzuki Zobrazit příspěvek
    Č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.

  5. 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";
                }
        }    
    }

Hostujeme u Server powered by TELE3