Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > DOM
DOM Forum d'entraide pour l'extension DOM permettant de manipuler des documents XML en PHP 5 (approche DOM). Avant de poster -> tutoriels DOM
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/05/2011, 22h17   #1
Invité de passage
 
Inscription : mai 2003
Messages : 7
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 7
Points : 0
Points : 0
Par défaut Charger un fichier XML provenant d'une URL

Bonjour, j'aimerai charger un fichier XML provenant de l'api d'allocine.
Par exemple mon url : http://api.allocine.fr/xml/search?co...tter&version=2

j'ai essayer avec load et loadXML mais a chaque fois la fonction me retourne false...

Code :
1
2
3
4
5
6
7
8
 
$dom = new DomDocument();
 
$url = 'http://api.allocine.fr/xml/search?count=1&filter=movie,theater&format=xml&page=1&partner=YW5kcm9pZC12Mg&profile=medium&q=potter&version=2';
 
$dom->loadXML($url);
//ou
$dom->load($url);
Comment faire...?
Merci
ovni est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 10h40   #2
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
L'erreur vient très probablement de leur côté (je ne sais pas si c'est vraiment une bonne chose pour vous )

En fait, leur XML est indiqué comme étant encodé en UTF-16 :
Code :
<?xml version="1.0" encoding="UTF-16"?>
Mais il contient le BOM de l'utf-8... Ce qui provoque une erreur dans le loadXML() (indiquant précisément ce phénomène).

Il y a donc plusieurs possibilités à partir de là.
Personnellement, je leur signalerai le problème.
En attendant, je passerai tout en UTF-8.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php 
header("content-type: text/xml"); // Facultatif : Juste pour vérifier je fais comprendre au navigateur que je veux afficher du XML
$dom = new DomDocument(); 
$url = 'http://api.allocine.fr/xml/search?count=1&filter=movie,theater&format=xml&page=1&partner=YW5kcm9pZC12Mg&profile=medium&q=potter&version=2';
 
$file = file_get_contents($url); // On récupère le XML dans une chaîne de caractère.
$file = utf8_encode($file); // Au cas où, on encode tout en utf-8
$file = str_replace('UTF-16', 'UTF-8', $file); // On remplace UTF-16 par UTF-8 dans la chaîne.
 
$dom->loadXML($file); // On load la chaîne modifiée en temps que XML
$dom->formatOutput = true; // On la met en "joli" ;)
echo $dom->saveXml(); // On affiche le XML final.
Ce n'est pas parfait (c'est même du bidouillage cradingue) mais en attendant qu'ils le changent du côté API...
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 11h42   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
on peut convertir en stream directement

Code :
1
2
3
4
5
6
7
$dom = new DomDocument();
 
$filter = 'php://filter/read=convert.iconv.UTF-8%2FUTF-16/resource=';
$url = 'http://api.allocine.fr/xml/search?count=1&filter=movie,theater&format=xml&page=1&partner=YW5kcm9pZC12Mg&profile=medium&q=potter&version=2';
$dom->load($filter . $url);
 
echo iconv('UTF-16', 'UTF-8', $dom->saveXML());
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h53.


 
 
 
 
Partenaires

Hébergement Web