J'ai les exemples de données XML suivants que je souhaite analyser dans SimpleXML à l'aide de PHP :
<?xml version="1.0" encoding="utf-8" ?> <ogr:FeatureCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ogr.maptools.org/ fire_districts.xsd" xmlns:ogr="http://ogr.maptools.org/" xmlns:gml="http://www.opengis.net/gml"> <gml:boundedBy> <gml:Box> <gml:coord><gml:X>112.921100000165</gml:X><gml:Y>-43.65832660868602</gml:Y></gml:coord> <gml:coord><gml:X>153.6407999999201</gml:X><gml:Y>-10.05939999961026</gml:Y></gml:coord> </gml:Box> </gml:boundedBy> <gml:featureMember> <ogr:IDM00007 fid="IDM00007.0"> <ogr:geometryProperty><gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>153.551804332204,-28.1645084912738 153.586699999805,-28.2582999997451 153.573299999695,-28.3133 153.582500000375</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty> <ogr:AAC>NSW_FW001</ogr:AAC> <ogr:DIST_NO>1</ogr:DIST_NO> <ogr:DIST_NAME>Far North Coast</ogr:DIST_NAME> <ogr:STATE_CODE>NSW</ogr:STATE_CODE> <ogr:SOURCE>RFS</ogr:SOURCE> <ogr:GROUP_NAME xsi:nil="true"/> </ogr:IDM00007> </gml:featureMember> <gml:featureMember> <ogr:IDM00007 fid="IDM00007.1"> <ogr:geometryProperty><gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>153.261225211474,-29.9401032948311 153.19820000033,-30.038899999935 153.20060000039,-30.1036999997551 153.214099999715</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty> <ogr:AAC>NSW_FW002</ogr:AAC> <ogr:DIST_NO>2</ogr:DIST_NO> <ogr:DIST_NAME>North Coast</ogr:DIST_NAME> <ogr:STATE_CODE>NSW</ogr:STATE_CODE> <ogr:SOURCE>RFS</ogr:SOURCE> <ogr:GROUP_NAME xsi:nil="true"/> </ogr:IDM00007> </gml:featureMember> </ogr:FeatureCollection>
J'ai essayé différentes manières de charger ce XML en utilisant SimpleXML, mais chaque fois que je fais un print_r sur les données, il reste vide :
<?php $data = file_get_contents("fire_districts.gml"); $xml = new SimpleXMLElement($data); $xml->registerXPathNamespace('f', 'http://ogr.maptools.org/'); $xml->registerXPathNamespace('g', 'http://www.opengis.net/gml'); $gml = $xml->xpath('/f:FeatureCollection/g:featureMember'); print_r($gml); ?>
Le résultat est le suivant :
Array ( [0] => SimpleXMLElement Object ( ) [1] => SimpleXMLElement Object ( ) [2] => SimpleXMLElement Object ( ) [3] => SimpleXMLElement Object ( ) ....
Que dois-je modifier pour réussir à charger ces données GML dans un tableau ?
Bravo, Mike
Vous pouvez essayer d'utiliser "var_dump" pour imprimer le contenu de la variable "$data" ou 'echo' pour voir s'il contient les données attendues.
Autres
Essayez d'utiliser simplexml_load_string() au lieu de file_get_contents().