| Autor | Zpráva | ||
|---|---|---|---|
| kopi Profil |
Zdravím, mám problém s xml feedem pomocí php a mysql. mám udělaný feed a při jedné položce to funguje, při více položkách dostávám chybu:
"This page contains the following errors: error on line 2 at column 1: Extra content at the end of the document Below is a rendering of the page up to the first error." Myslel jsem, že kdyby byla chyba někde v headers apod, tak by to nefungovalo vůbec a dostával bych i php error. <?
include('../includes/db.php');
//Create element a appendChild()
header('Content-type: application/xml');
$xml = new DOMDocument("1.0", "UTF-8");
$xml->formatOutput=true;
$leasing = $xml->createElement('leasing');
$xml->appendChild($leasing);
$xmlns = $xml->createAttribute('xmlns');
$leasing->appendChild($xmlns);
$value = $xml->createTextNode('urn:x-driveto.cz:leasing:feed:v1');
$xmlns->appendChild($value);
$carOffers = $xml->createElement("carOffers");
$leasing->appendChild($carOffers);
// dotaz na databázi
$query = "...";
$result = mysqli_query($conn, $query);
while($row=mysqli_fetch_assoc($result))
{
// ------------------------ začátek feedu ----------------------------//
$carOffer=$xml->createElement("carOffer");
$carOffers->appendChild($carOffer);
$partnerCarOfferId=$xml->createElement("partnerCarOfferId",$row['id_auto']);
$carOffer->appendChild($partnerCarOfferId);
$car=$xml->createElement("car");
$carOffer->appendChild($car);
$carSpecification=$xml->createElement("carSpecification");
$car->appendChild($carSpecification);
$make=$xml->createElement("make",$row['nazev']);
$carSpecification->appendChild($make);
$modelLine=$xml->createElement("modelLine",$row['model']);
$carSpecification->appendChild($modelLine);
$modelLineYear=$xml->createElement("modelLineYear",$row['rok_modelu']);
$carSpecification->appendChild($modelLineYear);
$modelLineMonth=$xml->createElement("modelLineMonth","1");
$carSpecification->appendChild($modelLineMonth);
$trim=$xml->createElement("trim",$row['vybava']);
$carSpecification->appendChild($trim);
$engineVolume=$xml->createElement("engineVolume",$engineVolume);
$carSpecification->appendChild($engineVolume);
$engineSuffix=$xml->createElement("engineSuffix",$engineSuffix);
$carSpecification->appendChild($engineSuffix);
$enginePowerKw=$xml->createElement("enginePowerKw",$vykonKW);
$carSpecification->appendChild($enginePowerKw);
$engineType=$xml->createElement("engineType",$engineType);
$carSpecification->appendChild($engineType);
$is4x4=$xml->createElement("is4x4",$is4x4);
$carSpecification->appendChild($is4x4);
$isAutomaticTransmission=$xml->createElement("isAutomaticTransmission",$isAutomaticTransmission);
$carSpecification->appendChild($isAutomaticTransmission);
}
ob_clean(); //Clean (erase) the output buffer
echo $xml->saveXML();
?> |
||
| Tomášeek Profil |
#2 · Zasláno: 28. 1. 2019, 12:11:01
kopi:
A to vygenerovane XML vypada jak? |
||
| kopi Profil |
#3 · Zasláno: 28. 1. 2019, 12:32:05
Pro jeden záznam vypadá správně, pro více záznamů to hodí jen error a bílou stránku.
|
||
| Tomášeek Profil |
#4 · Zasláno: 28. 1. 2019, 13:55:46
kopi:
Tak znovu. Jak to vygenerované XML vypadá? To znamená vložit sem to XML s více než jedním produktem, aby se v něm dala najít chyba. |
||
| kopi Profil |
#5 · Zasláno: 28. 1. 2019, 13:58:59
A mohl bys mi poradit, jak ho mám zobrazit? Když nactu URL, tak se nic nezobrazí.
|
||
| Tomášeek Profil |
#6 · Zasláno: 28. 1. 2019, 14:03:53
kopi:
To netuším. Možná si dumpnout $xml a zkusit to tam někde najít (před tím saveXML)? Případně nějak jinak, i práce s DOMem a XML musí mít způsob, jaký lze debugovat.
|
||
| Kajman Profil |
#7 · Zasláno: 28. 1. 2019, 14:27:04
Pro debug si můžete vracet content-type text/plain, pokud si výsledek z url neumíte uložit či zobrazit ve vývojářské konzoli prohlížeče.
Pro debug si nečistěte output buffer a povolte varovné hlášky, jinak byste byl asi varován, že na řádku 60 používáte neinicializovanou proměnnou. Která se navíc použije v dalším průchodu. $engineVolume=$xml->createElement("engineVolume",$engineVolume); |
||
| kopi Profil |
#8 · Zasláno: 28. 1. 2019, 18:43:33
Moc děkuju. Když jsem dal content-type text/plain, tak se mi zobrazila jasně vypsaná chyba a na jakém řádku, pak už to bylo lehké opravit. Moc děkuju.
|
||
|
Časová prodleva: 7 let
|
|||
0