从this网址获取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');
为什么我得到空阵列?希望我错过了一些简单的事情。
答案 0 :(得分:2)
这可能相当容易,但我想这也是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');