| 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: 12 let
|
|||
0