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);

'edition'も試しましたが、結果は両方とも空の配列になります。

array(0) { }

'/ mods / originInfo [1] / edition'を使用してフルパスを試しましたが、XPATHエラーで終了しました。私はこの表記法で問題を解決します:

$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 に答える