PHP анализирует пространство имен georss с помощью simpleXML

Попытка разобрать lat/lon из RSS-ленты Google Maps:

$file = "http://maps.google.com/maps/ms?ie=UTF8&hl=en&vps=1&jsv=327b&msa=0&output=georss&msid=217909142388190116501.000473ca1b7eb5750ebfe";
$xml = simplexml_load_file($file);    
$loc = $xml->channel->item;
echo $loc[0]->title;
echo $loc[0]->point;

Название показывается хорошо, но точка не дает мне ничего. Каждый узел выглядит так:

<item> 
    <guid isPermaLink="false">0004740950fd067393eb4</guid> 
    <pubDate>Sun, 20 Sep 2009 21:47:49 +0000</pubDate> 
    <title>Big Wong King Restaurant</title> 
    <description><![CDATA[<div dir="ltr">$4.99 full meals!</div>]]></description> 
    <author>neufuture</author> 
    <georss:point> 
      40.716236 -73.998413
    </georss:point> 
    <georss:elev>0.000000</georss:elev> 
  </item>

1 ответ

Решение

Попробуй это:

<?php 
    $file = "http://maps.google.com/maps/ms?ie=UTF8&hl=en&vps=1&jsv=327b&msa=0&output=georss&msid=217909142388190116501.000473ca1b7eb5750ebfe";
    $xml = simplexml_load_file($file);  
    $loc = $xml->channel->item;  
    foreach ($loc->children('http://www.georss.org/georss') as $geo) { 
        echo $geo;
    } 
?>

Ознакомьтесь с этой статьей Zend для работы с пространствами имен в XML

Другие вопросы по тегам