如何解析从 SRU 检索到的 XML 文档


How can I parse a XML document retrieved from SRU?

其他人

之前也在这里发布了类似的问题,但不幸的是,没有人能给出足够的答案: 使用 php 解析 XML (SRU)我想使用由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";
?>

我还用 isset 检查了 $var 1 和空,就像我在上面的示例中检查$fh并发现 $var 1 没有设置并且它也是空的。尝试运行脚本时,我在尝试将内容填充到 $var 1 中时收到错误消息:

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>

也许只有

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

您已经在变量$fh explainResponse