Я пытаюсь разобрать XML, как это:Анализировать XML с пространствами имен с SimpleXMLparser PHP
<?xml version="1.0" encoding="UTF-8"?>
<gml:FeatureCollection
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:gml="http://www.opengis.net/gml"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:wfs="http://www.opengis.net/wfs"
xmlns:p="http://example.org">
<gml:featureMember>
<p:Point>
<gml:pointProperty>
<gml:Point srsName="epsg:4258">
<gml:pos>-3.84307585 43.46031547</gml:pos>
</gml:Point>
<gml:Point srsName="epsg:4258">
<gml:pos>-3.84299411 43.46018513</gml:pos>
</gml:Point>
<gml:Point srsName="epsg:4258">
<gml:pos>-3.84299935 43.45998723</gml:pos>
</gml:Point>
<!--
... many more <gml:Point> nodes ...
-->
<gml:Point srsName="epsg:4258">
<gml:pos>-3.84309913 43.46054546</gml:pos>
</gml:Point>
<gml:Point srsName="epsg:4258">
<gml:pos>-3.84307585 43.46031547</gml:pos>
</gml:Point>
</gml:pointProperty>
</p:Point>
</gml:featureMember>
</gml:FeatureCollection>
Я хочу, чтобы каждый из gml:pos
строк, чтобы сохранить в БД, но на данный момент я счастлив печатать их в webpace (echo
...)
$output = simplexml_load_string($output);
$xml = $output->getNamespaces(true);
//print_r($xml);
$xml_document = $output->children($xml["p"]);
foreach($xml_document->Point->children($xml["gml"]);
echo $xml_point->Point[0];
echo $xml->FeatureCollection;
}
в $ выходе у меня есть полный XML, тонн координат в gml:point
Но я пытаюсь добраться до точек с помощью пространств имен, но я должен делать что-то неправильно, потому что я не могу ничего, кроме массива слова печати (даже с помощью print_r
...)
Это ваш atual источник XML? Похоже, что он не был хорошо сформирован. Он не будет разбираться. – helderdarocha
Я изменил xml. Теперь я установил полный. Предыдущий был изменен только для того, чтобы включить пару пунктов. Этот xml - это то, что я получил от webservice – user1298272
Как и в случае сбоя, если вы все равно полагаетесь на префиксы в документе (заданные 'getNamespaces (true)'), вы можете просто использовать их непосредственно с '-> детьми ("p", true) '. Лучше хотя бы определить свой собственный массив или набор констант с фактическими URI пространства имен, если код, генерирующий XML, изменится в будущем и отобразит разные префиксы с тем же значением. – IMSoP