Исчезающая географическая информация при использовании SimpleXMLObject - PullRequest
0 голосов
/ 28 декабря 2011

Я пытаюсь получить xml-ответ на объект через SimpleXMLElement. Но элемент XML исчезает с этой операцией. Взгляните на XML и SimpleXMLElement ясно:

<item><pubDate>Wed, 28 Dec 2011 13:04:30 GMT</pubDate><title>M 1.2, Nevada</title><description>December 28, 2011 13:04:30 GMT</description><link>http://earthquake.usgs.gov/earthquakes/recenteqsus/Quakes/nn00361989.php</link><geo:lat>37.4048</geo:lat><geo:long>-117.0953</geo:long><dc:subject>1</dc:subject><dc:subject>pasthour</dc:subject><dc:subject>7.00 km</dc:subject><guid isPermaLink="false">nn00361989</guid></item>

А вот возвращение SimpleXMLElement:

[item] => SimpleXMLElement Object
       (
           [pubDate] => Wed, 28 Dec 2011 13:04:30 GMT
           [title] => M 1.2, Nevada
           [description] => December 28, 2011 13:04:30 GMT
           [link] => http://earthquake.usgs.gov/earthquakes/recenteqsus/Quakes/nn00361989.php
           [guid] => nn00361989
       )

Как видите, здесь нет геопривязки и длинной информации. Я пытаюсь этот код для создания SimpleXMLObject:

$doc = new SimpleXMLElement($response)

Должен ли я использовать параметр с этим?

Ответы [ 2 ]

2 голосов
/ 28 декабря 2011

Ваши геоданные находятся в пространстве имен в XML, поэтому вам нужно сообщить simplexml, что есть также пространство имен данных с 'geo'

$doc = new SimpleXMLElement($response)
$namespaces = $doc->getNamespaces(true);
$docGeoData = $doc->item->children($namespaces['geo']);

Обратите внимание, что ваш xml-фрагмент сформирован неверно, поскольку в нем нет объявлений пространства имен

0 голосов
/ 28 декабря 2011

Возможно, вам следует попробовать simplexml_load_file

$doc = simplexml_load_file($response)
...