2012-08-07 45 views
0

以前別人發佈過類似的問題,但不幸的是,沒有人能給出足夠的答案:Parse XML (SRU) with php 我想使用由SRU生成的XML文件,並使用PHP解析它以獲取特定內容這個XML文件。我對PHP和SRU完全陌生,所以也許你可以幫我解決一些初學者的問題。如何解析從SRU檢索到的XML文檔?

首先我想通過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 $跳頻,並找出, $ 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> 
+0

XML文件的哪個部分是你想要得到的?你是否試圖獲得recordSchema的價值? – Jim 2012-08-07 12:37:16

回答

1

也許只有

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

你已經在$fh變量explainResponse

+0

Yeap! '$ var =(string)$ fh-> record-> recordSchema;' – 2012-08-07 12:46:02

+0

非常感謝,這個作品! – JJJ 2012-08-07 13:05:35

+0

因此,如果我將xml文件轉換爲xmlelement,則根元素已被變量提取,請問這是正確的嗎? – JJJ 2012-08-07 13:07:06