此前有其他人在此处发布了类似的问题,但遗憾的是没有人可以给出足够的答案:Parse XML (SRU) with php 我想使用由SRU生成的XML文件,并使用PHP解析它以获取此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并且像我checke $ fh一样清空,并且发现$ 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>
答案 0 :(得分:1)
也许只有
$var1 = $fh->record->recordSchema;
explainResponse
变量中已有$fh
。