以前有人在这里发布过类似的问题,但不幸的是没有人能给出足够的答案:Parse XML (SRU) with php I want to use an XML file, which is generated by SRU, and parse it with PHP to获取此 XML 文件的特定内容。我对 PHP 和 SRU 完全陌生,所以也许你可以在这里帮助我解决一些初学者的问题。
首先,我想通过 URL 获取 SRU 生成的 XML 文件:
<?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";
?>
我还检查了 $var1 与 isset 和空,就像我在上面的示例中检查 $fh 并发现 $var1 没有设置并且它也是空的。尝试运行脚本时,我在尝试将内容填充到 $var1 时收到错误消息:
Notice: Trying to get property of non-object in /var/www/testsite/sru_parse.php on line
27
也许这是一个非常简单的错误,它破坏了我的脚本。即使您只是指出我可能忘记的内容,我也非常感谢您的帮助。
哦,是的,关于 xml 文件结构:
<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>