Autor | Zpráva | ||
---|---|---|---|
Jakub Man Profil |
#1 · Zasláno: 15. 2. 2015, 18:24:00
Dobrý den,
Tvořím script, který bude schopný brát data ze XML feedu dodavatele, některé data změnit a zapsat do nového XML souboru. Bohužel, výsledný XML mi vždy vypíše jen poslední produkt. Nicméně výstup příkazem echo funguje. Výsledný XML soubor : http://data.fleximedia.cz/scripts/vystup.xml Výstup příkazu echo : http://data.fleximedia.cz/scripts/xmlfeed.php Kód : <!DOCTYPE html> <head> <meta charset="utf-8"> <title>FlexiMedia XML importer</title> </head> <body> <?php $doc = new DOMDocument(); $doc->load( 'http://www.redo.cz/publicdoc/cz_complete_03_nw.xml' ); $shop = $doc->getElementsByTagName( "product" ); foreach( $shop as $product ) { $nazvy = $product->getElementsByTagName( "nazev" ); $nazev = $nazvy->item(0)->nodeValue; $kody= $product->getElementsByTagName( "kod" ); $kod= $kody->item(0)->nodeValue; $popisy = $product->getElementsByTagName( "popis" ); $popis = $popisy->item(0)->nodeValue; $shortpopisy = $product->getElementsByTagName( "popisshort" ); $popisshort = $shortpopisy->item(0)->nodeValue; $stavskladu = $product->getElementsByTagName( "stav" ); $stav = $stavskladu->item(0)->nodeValue; $kategorie = $product->getElementsByTagName( "category" ); $category = $kategorie->item(0)->nodeValue; $obrazky = $product->getElementsByTagName( "images" ); $images = $obrazky->item(0)->nodeValue; $vyrobci = $product->getElementsByTagName( "manufacturer" ); $vyrobce = $vyrobci->item(0)->nodeValue; $vlastnosti = $product->getElementsByTagName( "parameters" ); $vlastnost = $vlastnosti->item(0)->nodeValue; if($stav = 0) { $dodacilhuta = 0; } else { $dodacilhuta = 5; } if($vyrobce = "Gabol, Španělsko") { $kratkypopis = "$popisshort Gabol"; } else { $kratkypopis = "$popisshort"; } foreach($vlastnosti as $nazevVlastnosti) { $nazevVlastnosti1 = $nazevVlastnosti->item['name']; } echo "Název : <b>$nazev</b><br>Dodací lhůta je $dodacilhuta dnů<br>Krátký popis : $kratkypopis <br> Kód : $kod <br>Vlastnosti : $vlastnost - $nazevVlastnosti1<br>Popis : $popis\n<br>"; } $winstorm = array(); $winstorm [] = array( 'nazev' => $nazev, 'kod' => $kod, 'popis' => $popis, 'kratkyPopis' => $kratkypopis, 'dodaciLhuta' => $dodacilhuta, ); $doc = new DOMDocument(); $doc->formatOutput = true; $r = $doc->createElement( "winstorm" ); $doc->appendChild( $r ); foreach( $winstorm as $cenik ) { $b = $doc->createElement( "cenik" ); $nazev = $doc->createElement( "nazev" ); $nazev->appendChild( $doc->createTextNode( $cenik['nazev'] ) ); $b->appendChild( $nazev ); $kod = $doc->createElement( "kod" ); $kod->appendChild( $doc->createTextNode( $cenik['kod'] ) ); $b->appendChild( $kod ); $popis = $doc->createElement( "popis" ); $popis->appendChild( $doc->createTextNode( $cenik['popis'] ) ); $b->appendChild( $popis ); $popisshort = $doc->createElement( "kratkyPopis" ); $popisshort->appendChild( $doc->createTextNode( $cenik['kratkyPopis'] ) ); $b->appendChild( $popisshort ); $dodacilhuta = $doc->createElement( "dodaciLhuta" ); $dodacilhuta->appendChild( $doc->createTextNode( $cenik['dodaciLhuta'] ) ); $b->appendChild( $dodacilhuta ); $r->appendChild( $b ); } echo $doc->saveXML(); $doc->save("vystup.xml") ?> } </body> |
||
juriad Profil |
#2 · Zasláno: 15. 2. 2015, 18:52:42
71. řádek přesuň před 11. (před foreach)
72. - 78. přesuň před 67. (dovnitř foreach) Problém byl v tom, že jsi do pole $winstorm přidal hodnotu až po doběhnutí prvního foreach; tedy jen jeden, poslední, produkt. |
||
Jakub Man Profil |
#3 · Zasláno: 15. 2. 2015, 19:10:12
juriad:
Děkuji mnohokrát :) Snažím se to vyřešit celé dopoledne a přitom je to taková drobnost :) |
||
Časová prodleva: 10 let
|
0