我使用以下Feed:http://feeds.livep2000.nl/
我尝试使用以下代码行解析它:
$xml = simplexml_load_string(file_get_contents($url), null, LIBXML_NOCDATA);
它向我显示的数据与我预期的一样但却错过geo:lat
和geo:long
,如下所示:
XML
<item>
<title>
<![CDATA[
A2 (DIA: ) some title
]]>
</title>
<link>http://monitor.livep2000.nl?SPI=1707082033480217</link>
<pubDate>Sat, 08 Jul 2017 20:33:48 +0200</pubDate>
<description>
<![CDATA[
1420999 MKA Rotterdam-Rijnmond ( Monitorcode )<br/>1420029 MKA Rotterdam-Rijnmond ( Ambulance 17-129 )<br/>
]]>
</description>
<guid>1707082033480217</guid>
<author/>
<geo:lat>51.8431255</geo:lat>
<geo:long>4.3429498</geo:long>
</item>
响应
["item"]=>
array(50) {
[0]=>
object(SimpleXMLElement)#163 (6) {
["title"]=>
string(41) "some title"
["link"]=>
string(48) "http://monitor.livep2000.nl?SPI=1707082036240209"
["pubDate"]=>
string(31) "Sat, 08 Jul 2017 20:36:24 +0200"
["description"]=>
string(44) "description ( Ambulance 09-129 )"
["guid"]=>
string(16) "1707082036240209"
["author"]=>
object(SimpleXMLElement)#213 (0) {
}
}
etc....
知道地理节点丢失的原因吗?
答案 0 :(得分:2)
问题是lat
和long
是所提到的XML中geo
命名空间的一部分,simplexml
默认情况下不允许您访问它们。
您需要使用以下内容:
$ns = $xml->getNamespaces(TRUE);
foreach ($xml->channel[0]->item as $item) {
var_dump($item->children($ns['geo'])->lat);
var_dump($item->children($ns['geo'])->lon);
// do other stuff with $item here
}