SimpleXML: Working with XML containing namespaces(SimpleXML:使用包含命名空间的 XML)
问题描述
我正在尝试通过 google-picasa API 获取地理信息.这是原始 XML:
I am trying to get to the geo information off the google-picasa API. This is the original XML:
<georss:where>
<gml:Point>
<gml:pos>35.669998 139.770004</gml:pos>
</gml:Point>
</georss:where>
我已经走到这一步了,有:
I already have come this far, with:
$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;
不会给我任何东西.有什么明显的我做错了吗?
will give me nothing. Is there something obvious that i am doing wrong?
推荐答案
您可以使用 XPath 和 registerXPathNamespace()
:
You could work with XPath and 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 上下文.
registerXPathNamespace […] Creates a prefix/ns context for the next XPath query.
更多在 SimpleXML 中处理命名空间的方法可以在这里找到,例如:
Stuart Herbert 在 PHP - 使用 SimpleXML解析 RSS 源
More ways to handle namespaces in SimpleXML can be found here, for example:
Stuart Herbert On PHP - Using SimpleXML To Parse RSS Feeds
这篇关于SimpleXML:使用包含命名空间的 XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:SimpleXML:使用包含命名空间的 XML
基础教程推荐
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- 在多维数组中查找最大值 2021-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01