同様の質問が以前に他の誰かによってここに投稿されましたが、残念ながら誰もそれに十分な答えを与えることができませんでした:phpでXML(SRU)を 解析するSRUによって生成されたXMLファイルを使用してPHPで解析したいこのXMLファイルの特定のコンテンツを取得します。私はPHPとSRUにまったく慣れていないので、初心者の問題についてここで私を助けてくれるかもしれません。
まず、SRUによって生成されたXMLファイルをURL経由でフェッチします。
<?php
$datasource='http://pub.uni-bielefeld.de/sru';
$fh = simplexml_load_file($datasource);
print_r($fh);
echo ("<br /> <br />");
?>
これにより、SimpleXMLElementを使用した出力が得られますが、それでも問題ありません。さらに、$ fhが設定されていて、空ではないかどうかを確認します。
<?php
if (empty($fh)) {
echo "fh is empty or isn't set.";
}
else {
echo "fh contains a value.\n";
}
if (isset($fh)) {
echo "fh is set.\n";
}
else {
echo "fh is not set.\n";
}
?>
これにより、$ fhに値が含まれ、出力が生成されるという事実からわかるように設定されているという期待される出力が得られます。その後、この$ fhの要素をフェッチしたいのですが、このようには機能しません。
<?php
$var1 = $fh->explainResponse->record->recordSchema;
echo "$var1";
?>
また、上記のサンプルで$ fhをチェックしたように、issetとemptyを使用して$ var1をチェックし、$ var1が設定されておらず、空であることも確認しました。スクリプトを実行しようとすると、$ var1にコンテンツを入力しようとした時点でエラーメッセージが表示されます:
Notice: Trying to get property of non-object in /var/www/testsite/sru_parse.php on line
27
たぶん、これは私のスクリプトを台無しにする本当に単純な間違いです。私が忘れていたかもしれないことを指摘しているだけでも、あなたの助けを本当に感謝します。
そうそう、xml-file-structureについて:
<explainResponse xmlns="http://www.loc.gov/zing/srw/">
<version>1.1</version>
<record>
<recordSchema>http://explain.z3950.org/dtd/2.0/</recordSchema>
<recordPacking>xml</recordPacking>
<recordData> .....
....
</recordData>
</record>
<echoedExplainRequest/>
</explainResponse>