无法使用PHP中的xpath()函数从XML检索数据

时间:2012-11-25 15:43:50

标签: php xml xpath

我想解析this xml文件并使用XPATH检索一些字段(this是我如何看待xml文件的方式,你可以从here下载):

我尝试使用以下代码来获取本书的版本:

$file_copac = "http://copac.ac.uk/search?isn=$isbn&rn=1&format=XML+-+MODS";
$xml = simplexml_load_file($file_copac) or die("cannot_get_data");
$temp = $xml->xpath('//edition');
var_dump($temp);

我也试过'版本'但结果是两个空数组:

array(0) { }

我使用'/ mods / originInfo [1] / edition'尝试了完整路径,以XPATH错误结束。我用这种表示法解决问题:

$edition = (string)$xml->mods->originInfo[1]->edition;

但是我想知道xpath的问题。

1 个答案:

答案 0 :(得分:3)

看起来像默认(空)命名空间的问题,解决方法:

$namespaces = $xml->getDocNamespaces(); 
$xml->registerXPathNamespace('__DEFAULT_NS__', $namespaces['']);
$r = $xml->xpath('//__DEFAULT_NS__:edition');

var_dump((string)$r[0]); //string(8) "8th. ed."