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

时间:2012-08-07 12:33:22

标签: php xml parsing

此前有其他人在此处发布了类似的问题,但遗憾的是没有人可以给出足够的答案: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>

1 个答案:

答案 0 :(得分:1)

也许只有

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

explainResponse变量中已有$fh