Si vous aviez error_reporting
et display_errors
activé, vous verrez il y a un
Fatal error: Call to undefined method SimpleXMLElement::Location()
Vous essayez d'accéder aux éléments avec des appels Méthode, par exemple
foreach($results->Location() as $location) {
quand il devrait être
foreach($results->Location as $location) {
Même chose pour les autres éléments.
En outre, ce n'est pas $area->area
mais juste $area
.
code fixe complet:
$results = simplexml_load_file($url);
foreach($results->Location as $location) {
foreach($location->Address as $address) {
foreach($address->Areas as $areas) {
foreach($areas->Area as $area) {
echo $area;
echo "<br />";
}
}
}
}
Sur sidenote, vous pouvez obtenir tous les éléments de la région dans le document sans boucle comme un fou lorsque vous utilisez un XPath. Cependant, étant donné que les éléments sont espaces de noms, vous devez vous enregistrer cet espace de noms avec un préfixe premier à pouvoir utiliser XPath:
$results = simplexml_load_file($url);
$results->registerXPathNamespace('d', 'http://clients.multimap.com/API');
$areas = $results->xpath('//d:Area');
foreach($areas as $area) {
echo "$area<br/>";
}
Encore une autre façon d'obtenir sur tous les éléments (bien que moins performat que d'utiliser un XPath) serait d'utiliser un Iterator pour marcher sur l'arbre DOM:
$elements = new RecursiveIteratorIterator(
simplexml_load_file($url, 'SimpleXmlIterator'));
foreach($elements as $element) {
if($element->getName() === 'Area') {
echo $element;
}
}
Juste après l'appel 'simplexml_load_file', mis en' var_dump (résultats $) 'et montrer ce qui est retourné. Aussi, avez-vous vérifié vos journaux? Et définissez error_reporting à 'E_ALL' pour vérifier les erreurs ... – ircmaxell
$ xml = simplexml_load_file ($ url); var_dump ($ xml); Qui ramène tout en arrière – Ashley