1

我想解析这个xml 文件并使用 XPATH 检索一些字段(是我看到 xml 文件的方式,你可以从这里下载):

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

$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) { }

我尝试使用以 XPATH 错误结束的 '/mods/originInfo[1]/edition' 的完整路径。我用这个符号解决了问题:

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

但是我想知道xpath的问题。

4

1 回答 1

3

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

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

var_dump((string)$r[0]); //string(8) "8th. ed."
于 2012-11-25T16:36:48.707 回答