Je dois lire un fichier XML à partir d'une URL
$map_url = "http://maps.google.com/maps/api/directions/xml?origin=".$merchant_address_url."&destination=".$customer_address_url."&sensor=false";
Cela me donne une URL comme:
J'utilise cette fonction pour lire puis obtenir des données:
$response_xml_data = file_get_contents($map_url);
if($response_xml_data){
echo "read";
}
$data = simplexml_load_string($response_xml_data);
echo "<pre>"; print_r($data); exit;
Mais pas de chance, une aide?
vous pouvez obtenir les données du XML en utilisant la fonction "simplexml_load_file". Veuillez vous référer à ce lien
http://php.net/manual/en/function.simplexml-load-file.php
$url = "http://maps.google.com/maps/api/directions/xml?origin=Quentin+Road+Brooklyn%2C+New+York%2C+11234+United+States&destination=550+Madison+Avenue+New+York%2C+New+York%2C+10001+United+States&sensor=false";
$xml = simplexml_load_file($url);
print_r($xml);
Votre code semble correct, vérifiez si vous avez fopen wrappers activé (allow_url_fopen = On
Sur php.ini)
En outre, comme mentionné par d'autres réponses, vous devez fournir un URI correctement codé ou le coder à l'aide de la fonction rlencode () . Vous devez également vérifier s'il y a une erreur lors de la récupération de la chaîne XML et s'il y a une erreur d'analyse, que vous pouvez générer en utilisant libxml_get_errors () comme suit:
<?php
if (($response_xml_data = file_get_contents($map_url))===false){
echo "Error fetching XML\n";
} else {
libxml_use_internal_errors(true);
$data = simplexml_load_string($response_xml_data);
if (!$data) {
echo "Error loading XML\n";
foreach(libxml_get_errors() as $error) {
echo "\t", $error->message;
}
} else {
print_r($data);
}
}
?>
Si le problème est que vous ne pouvez pas récupérer le code XML, c'est peut-être parce que vous devez inclure des en-têtes personnalisés dans votre demande, vérifiez comment utiliser stream_context_create () pour créer un contexte de flux personnalisé à utiliser lors de l'appel file_get_contents()
sur l'exemple 4 sur http://php.net/manual/en/function.file-get-contents.php
file_get_contents()
a généralement des problèmes de permission. Pour les éviter, utilisez:
function get_xml_from_url($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
$xmlstr = curl_exec($ch);
curl_close($ch);
return $xmlstr;
}
Exemple:
$xmlstr = get_xml_from_url('http://www.camara.gov.br/SitCamaraWS/Deputados.asmx/ObterDeputados');
$xmlobj = new SimpleXMLElement($xmlstr);
$xmlobj = (array)$xmlobj;//optional
$url = 'http://www.example.com'; $xml = simpleXML_load_file($url,"SimpleXMLElement",LIBXML_NOCDATA);
$ url peut être un fichier php, tant que le fichier génère des données au format xml en sortie.
Ça marche pour moi. Je pense que vous devez probablement utiliser urlencode()
sur chacun des composants de $map_url
.