0

以前有人在这里发布过类似的问题,但不幸的是没有人能给出足够的答案: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>
4

1 回答 1

1

也许只有

$var1 = $fh->record->recordSchema;

你已经有了explainResponse变量$fh

于 2012-08-07T12:38:54.860 回答