我正在尝试从google-picasa API获取地理信息。这是原始的XML:
<georss:where>
<gml:Point>
<gml:pos>35.669998 139.770004</gml:pos>
</gml:Point>
</georss:where>我已经走到这一步了,下面是:
$ns_geo=$item->children($namespace['georss']);
$geo=$ns_geo->children($namespace['gml']);var_dump($geo)将输出
object(SimpleXMLElement)#34 (1) {
["Point"]=> object(SimpleXMLElement)#30 (1) {
["pos"]=> string(18) "52.373801 4.890935"
}
} 但
echo (string)$geo->position or (string)$geo->position->pos; 什么也不会给我。有没有什么明显的地方是我做错了?
发布于 2010-01-07 02:02:10
您可以使用XPath和registerXPathNamespace()
$xml->registerXPathNamespace("georss", "http://www.georss.org/georss");
$xml->registerXPathNamespace("gml", "http://www.opengis.net/gml");
$pos = $xml->xpath("/georss:where/gml:Point/gml:pos");从文档中,强调我的观点:
registerXPathNamespace…为下一个XPath查询创建前缀/ns上下文。
在这里可以找到更多在SimpleXML中处理名称空间的方法,例如:
Stuart Herbert On PHP - Using SimpleXML To Parse RSS Feeds
发布于 2010-01-07 01:27:09
echo $geo->pos[0];发布于 2012-02-01 05:29:17
这就是我没有使用xpath的方法:
$georss = $photo->children('http://www.georss.org/georss');
$coords;
if($georss->count()>0) {
$gml = $georss->children('http://www.opengis.net/gml');
if($gml->count()>0) {
if(isset($gml->Point->pos)) {
$coords = $gml->Point->pos;
}
}
}https://stackoverflow.com/questions/2014835
复制相似问题