- Home
- Categorie
- Coding e Sistemistica
- PHP
- Parser PHP per XML tradedoulber
-
Parser PHP per XML tradedoulber
Ciao a tutti, sto provando (ma sono ignorante in materia) a fare un parser come segue:
$xml = simplexml_load_file('http://api.tradedoubler.com/1.0/vouchers?token=6D71B80D1A48154E2E96BC797C5DBB78FE0B0E3A');
echo "<h1>... e altri Codici Sconto</h1>";
echo "<ul>";
foreach($xml->voucherList->voucher->id as $id)
{
echo '<li><a href="'.$item->link.'">'.$item->title.'</a> '.$item->description.' </li>';
}
echo "</ul>";C'è qualcosa di sbagliato forse nel file perchè non riesco a caricarlo (mi da Start tag expected, '<' not found).
Poi anche altri errori nell'argomento del foreach..Qualcuno può darmi una mano?
Grazie,
-
Non devi effettuare tutte le operazioni a priori, dando per scontato che la prima istruzione vada bene. Se tu apri nel browser l'URL che hai passato alla simplexml_load_file, vedi che ti restituisce 10: Could not authenticate token due to an internal error, non un XML valido. Risolvi il problema con tradedoubler e poi provi a rieseguire lo script. In ogni caso, effettua prima un controllo sulla validità di quello che ricevi prima di iniziare a scorrere un file che potrebbe potenzialmente non esistere.
-
Venerdì il file c'era.. verifico.
Aggiornamento: pare che Tradedoubler abbia appena cambiato qualcosa.. attendo loro indicazioni.
-
Forse ho capito... elimina lo spazio presente nella stringa passata alla simplexml_load_file(). Se lo elimini l'XML si visualizza... vedi se ti dà qualche altro errore.
-
Grazie Francesco.
scusa l'ignoranza: come faccio a togliere lo spazio (e dovè..)?
-
Ciao,
intende lo spazio nell'url, che si trova tra gli ultimi caratteri.
-
Non so perchè sul forum avevo postato quegli spazi, scusate. Il problema però rimane: su un browser mi visualizza il file XML, ma indica all'inizio: "This XML file does not appear to have any style information associated with it. The document tree is shown below." e penso che l'errore che segue "parser error : Start tag expected, '<' not found in" sia una diretta conseguenza.
Da quello che ci capisco (poco) mi viene da pensare che non si tratti di un XML non formattato correttamente e che sia necessario scrivere due righe di codice per farglielo "digerire",
-
In realtà quel messaggio non c'entra in prima persona, è generato dal browser. Tuttavia l'XML che viene preso in considerazione è privo dell'intestazione XML, effettivamente, basta fare "Visualizza sorgente" all'apertura di quel link per notare che è assente. Ti consiglio di modificare l'algoritmo come segue:
[php]
<?php$header = '<?xmlversion="1.0" encoding="UTF-8"?>';
$filexml = file_get_contents("h t t p ://api.tradedoubler.com/1.0/vouchers?token=6D71B80D1A48154E2E96BC797C5DBB78FE0B0E3A");
$xml = simplexml_load_string($header.$filexml);?>
[/php]E poi continui con il tuo foreach... ovviamente togli gli spazi dall'url.
-
Ti ringrazio, purtroppo anche così mi presenta l'errore "Entity: line 1: parser error : Start tag expected, '<' not found"