PHP parsing a georss namespace with simpleXML

2019-01-28 09:23发布

问题:

Trying to parse out lat/lon from a google maps rss feed:

$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;

The title shows up alright, but point gives me nothing. Each node looks like this:

<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:

Try this:

<?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;
    } 
?>

Checkout this Zend article for working with namespaces in XML