Bonjour,
Je rencontre une difficulté pour lire le XML renvoyé lors de la recherche par adresse.
Voila à quoi ressemble le résultat de ma requête.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XLS version="1.2" ns4:schemaLocation="http://www.opengis.net/xls http://schemas.opengis.net/ols/1.2/olsAll.xsd" xmlns="http://www.opengis.net/xls" xmlns:ns4="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlsext="http://www.opengis.net/xlsext" xmlns:gml="http://www.opengis.net/gml">
<ResponseHeader/>
<Response version="1.2" requestID="1">
<GeocodeResponse>
<GeocodeResponseList numberOfGeocodedAddresses="1">
<GeocodedAddress>
<gml:Point>
<gml:pos>48.111679 -1.681862</gml:pos>
</gml:Point>
<Address countryCode="StreetAddress">
<StreetAddress>
<Street></Street>
</StreetAddress>
<Place type="Municipality">Rennes</Place>
<Place type="Qualite">30.0</Place>
<Place type="Departement">35</Place>
<Place type="Bbox">-1.752536;48.076880;-1.624359;48.154988</Place>
<Place type="Commune">Rennes</Place>
<Place type="Territoire">FXX</Place>
<PostalCode>35000</PostalCode>
</Address>
<GeocodeMatchCode matchType="City" accuracy="1.0"/>
</GeocodedAddress>
</GeocodeResponseList>
</GeocodeResponse>
</Response>
</XLS> |
Quand j'essaye de le parser avec xpath (en php). J'arrive à récupérer les coordonnées du lieu
echo "coords : ".$xpath->query('//gml:Point/gml:pos')->item(0)->textContent;
par contre impossible de sélectionner une autre balise que celles du namespace gml: par exemple :
1 2 3
| $query = '//Address';
$geocodedAddresses = $xpath->query($query);
echo 'nb Address : '.$geocodedAddresses->length; |
me donne nb Address : 0.
Par contre cette dernière requête me trouve bien 1 résultat si dans le XML d'origine je retire l'attribut xmlns="http://www.opengis.net/xls" de la balise XLS.
Est-ce une erreur dans le formatage du fichier réponse ?
Est-ce que vous auriez un exemple en php pour nettoyer le xml et pouvoir le parcourir sans problème avec xpath ?
Éventuellement une autre méthode ?
Merci d'avance
Sylvain
Partager