2013-01-22 3 views
1

J'ai créé un script qui prend XML à partir d'une URL et met à jour la base de données mysql et analyse les données dans un fichier csv.Analyse XML SimpleXML

Je reçois des chaînes HTML en XML et elles ne devraient pas être là. Comment les supprimer en analysant?

je charger le fichier XML comme ceci:

$xml = simplexml_load_file(utf8_encode($xml_url), 'SimpleXMLElement', LIBXML_NOCDATA); 

erreur que je reçois lors de l'exécution du script:

Warning: simplexml_load_file() [function.simplexml-load-file]: http://domain.com/api/get_catalog.php?id=351&user=878&key=b8:1: parser error : Space required after the Public Identifier in /dokumenti/skripte/xmlupdate/lost/test/lost_xml.php on line 59 

Warning: simplexml_load_file() [function.simplexml-load-file]: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> in /dokumenti/skripte/xmlupdate/lost/test/lost_xml.php on line 59 

Warning: simplexml_load_file() [function.simplexml-load-file]:^in /dokumenti/skripte/xmlupdate/lost/test/lost_xml.php on line 59 

Warning: simplexml_load_file() [function.simplexml-load-file]: http://domain.com/api/get_catalog.php?id=351&user=878&key=b8:1: parser error : SystemLiteral " or ' expected in /dokumenti/skripte/xmlupdate/lost/test/lost_xml.php on line 59 

Warning: simplexml_load_file() [function.simplexml-load-file]: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> in /dokumenti/skripte/xmlupdate/lost/test/lost_xml.php on line 59 

Warning: simplexml_load_file() [function.simplexml-load-file]:^in /dokumenti/skripte/xmlupdate/lost/test/lost_xml.php on line 59 

Warning: simplexml_load_file() [function.simplexml-load-file]: http://domain.com/api/get_catalog.php?id=351&user=878&key=b8:1: parser error : SYSTEM or PUBLIC, the URI is missing in /dokumenti/skripte/xmlupdate/lost/test/lost_xml.php on line 59 

Warning: simplexml_load_file() [function.simplexml-load-file]: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> in /dokumenti/skripte/xmlupdate/lost/test/lost_xml.php on line 59 

Warning: simplexml_load_file() [function.simplexml-load-file]:^in /dokumenti/skripte/xmlupdate/lost/test/lost_xml.php on line 59 
xml $ not loaded. 

Lorsque j'utilise un Firefox et enregistrer XML à partir d'URL sur le disque que je n'ai aucun problème l'analyse juste quand j'essaye de l'obtenir d'URL.

XML semble bien: Une partie du XML:

<?xml version="1.0" encoding="UTF-8"?> 
<RecroKatalog> 
<viewCustomerDiscount> 
    <BrojArtikla>10214</BrojArtikla> 
    <Naziv>Eksterno kucište 2.5&quot; S-ATA+IDE HDD, Aluminium, USB 2.0</Naziv> 
    <NetoPrice>81.8224</NetoPrice> 
    <Status>Dostupno</Status> 
    <Opis></Opis> 
    <dugi_opis>Isporucuje se u SIVOJ boji</dugi_opis> 
    <Image>http://shop.lost.hr/data/images/big/10.jpg</Image> 
    <WEB_Grupa>Ladice i eksterna kucišta - OSTALO</WEB_Grupa> 
    <Akcija>0</Akcija> 
    <Proizvodjac></Proizvodjac> 
    <Klasifikacija>PH-25SD-B/VK220</Klasifikacija> 
</viewCustomerDiscount> 
+0

Parce que ce n'est pas valide xml. –

+0

ressemble à des lignes supplémentaires sont ajoutées à votre XML lorsque vous l'appelez à distance et qui le cause invalide – Wilq

+1

D'abord, vous pouvez utiliser XMLReader :: isValid (void) pour voir si votre document xml est valide ou non. – user1929959

Répondre

5

Il y a quelques énormes indices dans les messages d'erreur. Il se plaint de voir:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 

Il est le début d'un document HTML étant fourni par ce site ... pas le XML que vous recherchez. Cela se produit généralement lorsque vous devez vous authentifier auprès du service distant (donc travailler dans votre navigateur, lorsque vous vous êtes connecté), mais vous ne demandez pas à SimpleXML de le faire pour vous.

+0

Je me suis dit que c'est lié à sa déclaration: * "Il s'est arrêté au travail aujourd'hui et je suis confus, car il lit le code HTML non XML" *. Mais cela ne nous aide pas vraiment. –

+0

Mais quand je vais à cette URL avec le navigateur, je reçois XML valide? Il ya 3 heures cela a fonctionné? Et il travaillait après 20 jours comment? – mehnihma

+0

@mehnihma Quelle URL? ...... –