Xml práce s kategoriemi – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Xml práce s kategoriemi – PHP – Fórum – Programujte.comXml práce s kategoriemi – PHP – Fórum – Programujte.com

 

jAkErCZ0
Stálý člen
30. 7. 2018   #1
-
0
-

Zdravím, 

Mám takový problém na mém xml perseru bych rád napojil nový xml od dodavatele ale nějak mě nenapadá jak na to...

 Kód pro práci s kategoriemi, které pracovali s jiným xml....

 public function zpracujXmlKategorie($xml) {

        $poleLevel1 = [
            'Suplementy' => 5
        ];

        foreach ($xml->StoItem as $item) {
            $tmp1 = explode(' ', $item->SPresentTree->Level1);            unset($tmp1[0]);
            $level1 = trim(implode(' ', $tmp1));
            $idLevel0 = isset($poleLevel1[$level1]) ? $poleLevel1[$level1] : false;

            /* level 1 */
            if ($level1) {
                $data = $this->vratDataProKategorii($idLevel0, $level1);
                $kategorieId_1 = $this->connection->query(sprintf('SELECT category_id FROM category WHERE url = "%s" LIMIT 1', $data['url']))->fetch();
                if (!$kategorieId_1) {
                    $this->connection->query('INSERT INTO category', $data);
                    Debugger::log(sprintf('Vytvořena kategorie úrovně %d s názvem %s', 1, $level1), 'import');
                    $kategorieId_1 = $this->connection->getInsertId();
                } else {
                    $kategorieId_1 = $kategorieId_1->category_id;
                }

                /* level 2 */
                $tmp2 = explode(' ', $item->SPresentTree->Level2);
                unset($tmp2[0]);
                $level2 = trim(implode(' ', $tmp2));
                if ($level2) {
                    $data = $this->vratDataProKategorii($kategorieId_1, $level2);
                    $kategorieId_2 = $this->connection->query(sprintf('SELECT category_id FROM category WHERE url = "%s" LIMIT 1', $data['url']))->fetch();
                    if (!$kategorieId_2) {
                        $this->connection->query('INSERT INTO category', $data);
                        Debugger::log(sprintf('Vytvořena kategorie úrovně %d s názvem %s', 2, $level2), 'import');
                        $kategorieId_2 = $this->connection->getInsertId();
                    } else if (is_object($kategorieId_2)){
                        $kategorieId_2 = $kategorieId_2->category_id;
                    }

                    /* level 3 */
                    $tmp3 = explode(' ', $item->SPresentTree->Level3);
                    unset($tmp3[0]);
                    $level3 = trim(implode(' ', $tmp3));
                    if ($level3) {
                        $data = $this->vratDataProKategorii($kategorieId_2, $level3);
                        $kategorieId_3 = $this->connection->query(sprintf('SELECT category_id FROM category WHERE url = "%s" LIMIT 1', $data['url']))->fetch();
                        if (!$kategorieId_3) {
                            $this->connection->query('INSERT INTO category', $data);
                            Debugger::log(sprintf('Vytvořena kategorie úrovně %d s názvem %s', 3, $level3), 'import');
                        }
                    }
                }
            }
        }
    }

Nový feed..

<SHOPITEM>
<ITEM_ID>727739</ITEM_ID>
<ITEMGROUP_ID>247175</ITEMGROUP_ID>
<PRODUCT>Actions Whey Gainer - 2250g-cokolada</PRODUCT>
<PRODUCT_NAME>Actions Whey Gainer</PRODUCT_NAME>
<VARIANT_NAME>2250g-cokolada</VARIANT_NAME>
<MANUFACTURER>Aminostar</MANUFACTURER>
<CODE>DS10671328</CODE>
<EAN>8594046794549</EAN>
<DESCRIPTION>
Obsahuje rychlé sacharidy, které doplní glykogenové zásoby téměř okamžitě a středně rychlé a pomalé sacharidy pro obnovení energetických zásob po fyzickém výkonu. Nápoj je doplněn o spektrum aminokyselin, obsažených v syrovátkovém proteinu. Zdrojem aminokyselin jsou proteiny, které jsou potřebné pro udržování a růst svalových tkání. Aminostar - překonávejte své hranice! Výrobky značky Aminostar jsou doporučeny Mezinárodní Asociací pro naturální kulturistiku INBA Europe a Českou společností pro naturální sport. Aminostar Actions Whey Gainer – vhodné pro sportovce SLOŽENÍ obsahuje: sušená syrovátka (z mléka), krystalická fruktóza, dextróza, maltodextrin, hydrolyzát kolagenu, kakaový prášek (u příchutě čokoláda), sójový lecitin, zahušťovadlo: xanthan, vitamínový a minerální premix (fosforečnan vápenatý, uhličitan vápenatý, chlorid chromitý, difosforečnan železitý, chlorid draselný, glukonan měďnatý 1 %, fosforečnan hořečnatý, síran manganatý, chlorid sodný, citronan sodný, molybdenan sodný, seleničitan sodný, glukonan zinečnatý, kyselina askorbová (vitamín C), tokoferol-acetát (vitamín E), nikotinamid, retinol-acetát (vitamín A), pantothenan vápenatý (vitamín B5), pyridoxin-hydrochlorid (vitamín B6), thiamin-mononitrát (vitamín B1), cholekalciferol (vitamín D3), riboflavin (vitamín B2), kyanokobalamin (vitamín B12), foláty (kyselina listová), biotin), aroma, barviva (u příchutě jahoda – extrakt z červené řepy) DÁVKOVÁNÍ Je určen pro přípravu koktejlů - produkt má plnou chuť v případě, že při jeho přípravě postupujete následovně: Vložte 50 g Actions Whey Gainer ( 1 odměrka ) prášku do šejkru / Aminostar / naplněného 2dcl pitné vody ( bez obsahu kysličníku uhličitého ) a pomalu důkladně rozmíchejte. Nechejte stát asi 2 minuty, přidejte ještě 1 dl až 2 dcl pitné vody a poté rozmixujte. Pro přípravu koktejlu z Actions Whey Gainer můžete použít i mléko v objemu 3 dl – doporučujeme UHT (trvanlivé) s obsahem 2 % mléčného tuku. V tomto případě však počítejte s tím, že “plnější” chuť je docílena změnou obsahu živin a energie. Místo mléka můžete před mixováním přidat 1 porci, tedy asi 1 dl (zmrzlinářskou naběračku) kvalitní zmrzliny. Chutný nápoj získáte z Actions Whey Gainer, pokud do 1 porce koktejlu připraveného s použitím mléka, přidáte 1/2 banánu. Pro přípravu Actions Whey Gainer NIKDY nepoužívejte ovocný džus ani jiné ovoce než banán. POZOR: Actions Whey Gainer není vhodný jako náhrada obvyklých pokrmů v průběhu redukčních diet a “rýsování”! Actions Whey Gainer používejte: Ihned po ukončení tréninku (výkonu) pokud byl náročný, co do objemu i intenzity (minimálně 90 minut celkové zátěže nebo víc) – v tom případě připravujte Whey Gainer s použitím vody a nepřidávejte nic jiného! S odstupem minimálně 2 hodin od ukončení silově zaměřeného tréninku nebo výkonu. Jako součást vysokoenergetické snídaně vezměte Actions Whey Gainer, jste-li sportovci zaměření spíše na silovou vytrvalost a vytrvalost. Vezměte Actions Whey Gainer jako tzv. druhou večeři (asi 60 – 120 minut před spaním) v případě, že fyzická zátěž byla v ten den mimořádná především co do jejího trvání (minimálně 2 hodiny). Jako přesnídavku či odpolední svačinu můžete použít Actions Whey Gainer pro sportem značně zatíženou mládež Základní dávka Actions Whey Gainer je 50 g ( 1 odměrka ), avšak maximální dávka je až 150 g , podmínkou však je rozdělení celkového denního množství do několika dávek s odstupem alespoň 2 hodin a použití vody, nikoliv mléka!! Samozřejmostí je nutnost započítat v této formě konzumovanou energii a živiny do celkového denního příjmu. UPOZORNĚNÍ Přípravek není určen pro děti, těhotné a kojící ženy. Ukládejte mimo dosah dětí. Přípravek není určen k používání jako náhrada pestré stravy. Nepřekračujte doporučenou denní dávku! Nevhodné pro osoby s intolerancí laktózy.
</DESCRIPTION>
<DESCRIPTION_HTML>
<p>Obsahuje rychlé sacharidy, které doplní glykogenové zásoby téměř okamžitě a středně rychlé a pomalé sacharidy pro obnovení energetických zásob po fyzickém výkonu. Nápoj je doplněn o spektrum aminokyselin, obsažených v syrovátkovém proteinu. Zdrojem aminokyselin jsou proteiny, které jsou potřebné pro udržování a růst svalových tkání.</p> <p>Aminostar - překonávejte své hranice! Výrobky značky Aminostar jsou doporučeny Mezinárodní Asociací pro naturální kulturistiku INBA Europe a Českou společností pro naturální sport.</p> <p>Aminostar Actions Whey Gainer – vhodné pro sportovce</p> <p>SLOŽENÍ</p> <p>obsahuje: sušená syrovátka (z mléka), krystalická fruktóza, dextróza, maltodextrin, hydrolyzát kolagenu, kakaový prášek (u příchutě čokoláda), sójový lecitin, zahušťovadlo: xanthan, vitamínový a minerální premix (fosforečnan vápenatý, uhličitan vápenatý, chlorid chromitý, difosforečnan železitý, chlorid draselný, glukonan měďnatý 1 %, fosforečnan hořečnatý, síran manganatý, chlorid sodný, citronan sodný, molybdenan sodný, seleničitan sodný, glukonan zinečnatý, kyselina askorbová (vitamín C), tokoferol-acetát (vitamín E), nikotinamid, retinol-acetát (vitamín A), pantothenan vápenatý (vitamín B5), pyridoxin-hydrochlorid (vitamín B6), thiamin-mononitrát (vitamín B1), cholekalciferol (vitamín D3), riboflavin (vitamín B2), kyanokobalamin (vitamín B12), foláty (kyselina listová), biotin), aroma, barviva (u příchutě jahoda – extrakt z červené řepy)</p> <p>DÁVKOVÁNÍ</p> <p>Je určen pro přípravu koktejlů - produkt má plnou chuť v případě, že při jeho přípravě postupujete následovně: Vložte 50 g Actions Whey Gainer ( 1 odměrka ) prášku do šejkru / Aminostar / naplněného 2dcl pitné vody ( bez obsahu kysličníku uhličitého ) a pomalu důkladně rozmíchejte. Nechejte stát asi 2 minuty, přidejte ještě 1 dl až 2 dcl pitné vody a poté rozmixujte. Pro přípravu koktejlu z Actions Whey Gainer můžete použít i mléko v objemu 3 dl – doporučujeme UHT (trvanlivé) s obsahem 2 % mléčného tuku. V tomto případě však počítejte s tím, že “plnější” chuť je docílena změnou obsahu živin a energie. Místo mléka můžete před mixováním přidat 1 porci, tedy asi 1 dl (zmrzlinářskou naběračku) kvalitní zmrzliny. Chutný nápoj získáte z Actions Whey Gainer, pokud do 1 porce koktejlu připraveného s použitím mléka, přidáte 1/2 banánu. Pro přípravu Actions Whey Gainer NIKDY nepoužívejte ovocný džus ani jiné ovoce než banán. POZOR: Actions Whey Gainer není vhodný jako náhrada obvyklých pokrmů v průběhu redukčních diet a “rýsování”! Actions Whey Gainer používejte: Ihned po ukončení tréninku (výkonu) pokud byl náročný, co do objemu i intenzity (minimálně 90 minut celkové zátěže nebo víc) – v tom případě připravujte Whey Gainer s použitím vody a nepřidávejte nic jiného! S odstupem minimálně 2 hodin od ukončení silově zaměřeného tréninku nebo výkonu. Jako součást vysokoenergetické snídaně vezměte Actions Whey Gainer, jste-li sportovci zaměření spíše na silovou vytrvalost a vytrvalost. Vezměte Actions Whey Gainer jako tzv. druhou večeři (asi 60 – 120 minut před spaním) v případě, že fyzická zátěž byla v ten den mimořádná především co do jejího trvání (minimálně 2 hodiny). Jako přesnídavku či odpolední svačinu můžete použít Actions Whey Gainer pro sportem značně zatíženou mládež Základní dávka Actions Whey Gainer je 50 g ( 1 odměrka ), avšak maximální dávka je až 150 g , podmínkou však je rozdělení celkového denního množství do několika dávek s odstupem alespoň 2 hodin a použití vody, nikoliv mléka!! Samozřejmostí je nutnost započítat v této formě konzumovanou energii a živiny do celkového denního příjmu.</p> <p>UPOZORNĚNÍ</p> <p>Přípravek není určen pro děti, těhotné a kojící ženy. Ukládejte mimo dosah dětí. Přípravek není určen k používání jako náhrada pestré stravy. Nepřekračujte doporučenou denní dávku! Nevhodné pro osoby s intolerancí laktózy.</p> <p></p><br><br><table><caption>Průměrné nutriční informace</caption><thead><tr><th></th><th>ve 100 g</th><th>v 1 dávce 50 g</th></tr></thead><tbody><tr><td>Energetická hodnota</td><td>364 kCal</td><td>182 kCal</td></tr><tr><td>Energetická hodnota</td><td>1546 kJ</td><td>773 kJ</td></tr><tr><td>Bílkoviny - proteiny</td><td>15 g</td><td>7,5 g</td></tr><tr><td>Sacharidy - uhlohydráty</td><td>71,6 g</td><td>35,8 g</td></tr><tr><td>z toho dextróza</td><td>16,8 g</td><td>8,4 g</td></tr><tr><td>z toho fruktóza</td><td>16,8 g</td><td>8,4 g</td></tr><tr><td>z toho maltodextrin</td><td>14,5 g</td><td>7,25 g</td></tr><tr><td>Tuky</td><td>2 g</td><td>1 g</td></tr><tr><td>z toho lecitin</td><td>2 g</td><td>1 g</td></tr></tbody></table><br><br><table><caption>Vitamíny a minerály</caption><thead><tr><th></th><th>ve 100 g</th><th>v 1 dávce 50 g</th></tr></thead><tbody><tr><td>Vitamín A - retinol</td><td>160 mcg</td><td>80 mcg</td></tr><tr><td>Vitamín B1 - thiamin</td><td>0,6 mg</td><td>0,3 mg</td></tr><tr><td>Vitamín B12 - kobalamin</td><td>0,8 mcg</td><td>0,4 mcg</td></tr><tr><td>Vitamín B2 - riboflavin</td><td>1 mg</td><td>0,5 mg</td></tr><tr><td>Vitamín B3 - niacin</td><td>4,11 mg</td><td>2,06 mg</td></tr><tr><td>Vitamín B5 - kyselina pantothenová</td><td>1,2 mg</td><td>0,6 mg</td></tr><tr><td>Vitamín B6 - pyridoxin</td><td>0,7 mg</td><td>0,35 mg</td></tr><tr><td>Vitamín B11 - cholin - kyselina pteryl-hepta-glutamová</td><td>40 mcg</td><td>20 mcg</td></tr><tr><td>Vitamín C</td><td>27 mg</td><td>13,5 mg</td></tr><tr><td>Vitamín D - kalciferol</td><td>1 mcg</td><td>0,5 mcg</td></tr><tr><td>Vitamín E - tokoferol</td><td>3 mg</td><td>1,5 mg</td></tr><tr><td>Vitamín B7 - Vitamin H - biotin</td><td>40 mcg</td><td>20 mcg</td></tr><tr><td>Draslík</td><td>643 mg</td><td>321,5 mg</td></tr><tr><td>Fosfor</td><td>300 mg</td><td>150 mg</td></tr><tr><td>Chrom</td><td>180 mcg</td><td>90 mcg</td></tr><tr><td>Mangan</td><td>1 mg</td><td>0,5 mg</td></tr><tr><td>Měď</td><td>0,3 mg</td><td>0,15 mg</td></tr><tr><td>Molybden</td><td>30 mcg</td><td>15 mcg</td></tr><tr><td>Selen</td><td>14 mcg</td><td>7 mcg</td></tr><tr><td>Sodík</td><td>340 mg</td><td>170 mg</td></tr><tr><td>Vápník</td><td>163 mg</td><td>81,5 mg</td></tr><tr><td>Zinek</td><td>3 mg</td><td>1,5 mg</td></tr><tr><td>Železo</td><td>3,5 mg</td><td>1,75 mg</td></tr></tbody></table><br><br><table><caption>Aminokyselinové spektrum</caption><thead><tr><th></th><th>ve 100 g</th><th>v 1 dávce 50 g</th></tr></thead><tbody><tr><td>Kyselina asparagová</td><td>7000 mg</td><td>3500 mg</td></tr><tr><td>Kyselina glutamová</td><td>12280 mg</td><td>6140 mg</td></tr><tr><td>L-Alanin</td><td>7890 mg</td><td>3945 mg</td></tr><tr><td>L-Arginin</td><td>6160 mg</td><td>3080 mg</td></tr><tr><td>L-Cystein</td><td>620 mg</td><td>310 mg</td></tr><tr><td>L-Fenylalanin</td><td>2520 mg</td><td>1260 mg</td></tr><tr><td>Glycin</td><td>16960 mg</td><td>8480 mg</td></tr><tr><td>L-Histidin</td><td>900 mg</td><td>450 mg</td></tr><tr><td>L-Hydroxylysin</td><td>360 mg</td><td>180 mg</td></tr><tr><td>L-Hydroxyprolin</td><td>8020 mg</td><td>4010 mg</td></tr><tr><td>L-Isoleucin</td><td>2680 mg</td><td>1340 mg</td></tr><tr><td>L-Leucin</td><td>4910 mg</td><td>2455 mg</td></tr><tr><td>L-Lysin</td><td>5270 mg</td><td>2635 mg</td></tr><tr><td>L-Methionin</td><td>1040 mg</td><td>520 mg</td></tr><tr><td>L-Prolin</td><td>11150 mg</td><td>5575 mg</td></tr><tr><td>L-Serin</td><td>3560 mg</td><td>1780 mg</td></tr><tr><td>L-Threonin</td><td>3210 mg</td><td>1605 mg</td></tr><tr><td>L-Tryptofan</td><td>1090 mg</td><td>545 mg</td></tr><tr><td>L-Tyrosin</td><td>1080 mg</td><td>540 mg</td></tr><tr><td>L-Valin</td><td>3290 mg</td><td>1645 mg</td></tr></tbody></table><br><br>
</DESCRIPTION_HTML>
<CATEGORIES>
<CATEGORY id="20390" parent_id="0">Sacharidy, gainery</CATEGORY>
<CATEGORY id="20391" parent_id="20390">Do 20% proteinů, bílkovin</CATEGORY>
<CATEGORY id="20392" parent_id="20391">Do 2500g</CATEGORY>
</CATEGORIES>
<CATEGORYTEXT>
Sacharidy, gainery > Do 20% proteinů, bílkovin > Do 2500g
</CATEGORYTEXT>
<PARAMETERS/>
<IMGURL>
https://dscdn.cz/…9330f9e9.jpg
</IMGURL>
<IMAGES>
<IMGURL>
https://dscdn.cz/…9330f9e9.jpg
</IMGURL>
</IMAGES>
<VIDEO_URL/>
<PRICE_VAT>440</PRICE_VAT>
<PRICE>382.61</PRICE>
<PRICE_WHOLESALE>356.17</PRICE_WHOLESALE>
<VAT>15</VAT>
<CURRENCY>CZK</CURRENCY>
<DELIVERY_DATE>0</DELIVERY_DATE>
<WAREHOUSE_QUANTITY>11</WAREHOUSE_QUANTITY>
</SHOPITEM>

A tyto kategorie 

<CATEGORY id="20390" parent_id="0">Sacharidy, gainery</CATEGORY>
<CATEGORY id="20391" parent_id="20390">Do 20% proteinů, bílkovin</CATEGORY>
<CATEGORY id="20392" parent_id="20391">Do 2500g</CATEGORY>

Na starém to fungovalo že v xml bylo <level1>,<level2>,<level3>

Ale tady v tomto je jen <CATEGORY> a parametry id a perent_id.

Jak bych mohl načíst z toho <CATEGORY> ty parametry?

Díky všem za pomoc .)

Nahlásit jako SPAM
IP: 109.183.230.–
peter
~ Anonymní uživatel
4014 příspěvků
1. 8. 2018   #2
-
0
-

To se velmi tezko odhaduje. Jako obvykle davas jakysi slozity kousek kodu misto jednoducheho funkcniho celku. Treba tvuj parser, kod, ktery jsi tu nedal, ani atributy nevytahuje.

php.net/xml
http://php.net/…ml-parse.php
Parser uvedeny v prikladu od "lz_speedy at web dot de - 9 years ago" vytahuje atributy do $result['attr'][$attr]. Mozna echo $item['attr'] ? Mozna neco pod itemem. Kdyz ty pouzivas i takove nestandartni znaceni :) Ztezuje to orientaci v kodu. Coz muze byt dobra obrana vuci hackerum, ale ted je to spis ke skode.
 

php.net/dom
DOMElement::getAttribute — Returns value of attribute

Nahlásit jako SPAM
IP: 90.176.141.–
peter
~ Anonymní uživatel
4014 příspěvků
1. 8. 2018   #3
-
0
-

PS. Parser se nazyva ta cast kodu, ktera xml parsuje. Tahle funkce je az takovy post proces, kteremu predavas uz jakasi data, ktera dal zpracovavas. No, slo by to nazvat asi tez parsovani. Ale, myslim si, ze pro nas zajimavejsi by byla ta cast pred touto funkci, v hierarchii.

Nahlásit jako SPAM
IP: 90.176.141.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 47 hostů

Podobná vlákna

Práce s XML v C# — založil plasmo

Prace s XML — založil TuTi_fruTi

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý