【问题标题】:simplexml_load_file with xPath returns empty array带有 xPath 的 simplexml_load_file 返回空数组
【发布时间】:2014-04-08 07:24:59
【问题描述】:

this URL 获取 XML:

$xml = simplexml_load_file('http://geocode-maps.yandex.ru/1.x/?geocode=37.71677,55.75208&kind=metro&spn=1,1&rspn=1');

print_r($xml) 显示已加载 XML,但 xpath 始终返回空数组。我试过了:

$xml->xpath('/');
$xml->xpath('/ymaps');
$xml->xpath('/GeoObjectCollection');
$xml->xpath('/ymaps/GeoObjectCollection');
$xml->xpath('//GeoObjectCollection');
$xml->xpath('precision');

为什么我有空数组?希望我只是错过了一些简单的东西。

【问题讨论】:

    标签: xpath simplexml


    【解决方案1】:

    这可能很容易,但我想这也是 XML 历史上最常见的错误:你忘记了命名空间!

    给定 XML 中的许多元素正在更改默认命名空间,您必须在 XPath 中考虑这一点。

    你可以先像这样注册你的命名空间:

    $xml->registerXPathNamespace('y', 'http://maps.yandex.ru/ymaps/1.x');
    $xml->registerXPathNamespace('a', 'http://maps.yandex.ru/attribution/1.x');
    

    然后你就可以查询你的数据了:

    $xml->xpath('//y:ymaps/y:GeoObjectCollection');
    

    【讨论】:

    • 谢谢!我永远找不到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    相关资源
    最近更新 更多