2013-04-03 88 views
3
<?xml version="1.0" ?> 
    <aws:UrlInfoResponse xmlns:aws="http://alexa.amazonaws.com/doc/2005-10-05/"> 
    <aws:Response xmlns:aws="http://awis.amazonaws.com/doc/2005-07-11"> 
    <aws:OperationRequest> 
    </aws:OperationRequest> 
    <aws:UrlInfoResult> 
    <aws:Alexa> 
     <aws:TrafficData> 
     <aws:DataUrl type="canonical">google.com/</aws:DataUrl> 
     <aws:Rank>1</aws:Rank> 
     </aws:TrafficData> 
    </aws:Alexa> 
    </aws:UrlInfoResult> 
    <aws:ResponseStatus xmlns:aws="http://alexa.amazonaws.com/doc/2005-10-05/"> 
    <aws:StatusCode>Success</aws:StatusCode> 
    </aws:ResponseStatus> 
    </aws:Response> 
    </aws:UrlInfoResponse> 

我想解析的所有內容均來自此xml文檔的排名。 試圖這樣做的IAM是什麼...使用simplexml_load_file解析XML文件返回空對象

 $xml= simplexml_load_file("path of the file saved"); 
     echo $xml->Response->UrlInfoResult->Alexa->TrafficData->Rank; 

,但我得到一個錯誤這樣做。它說

Notice: Trying to get property of non-object in C:\wamp\www\SEO Stats[Only Testing]\Tools\web_worth.php on line 13 

的錯誤是在這一行

echo $xml->Response->UrlInfoResult->Alexa->TrafficData->Rank; 
this line is referred as line no 13.. 
+0

什麼是第13行? –

+0

echo $ xml-> Response-> UrlInfoResult-> Alexa-> TrafficData-> Rank; –

+0

只需print_r($ xml);並檢查它的內容是什麼 – Shin

回答

7

解析器是返回一個空的對象,因爲根據documentation您必須指定前綴命名空間 - 因此,例如,你想使用類似:

simplexml_load_file('/path/to/file.xml', null, null, 'aws', true); 

working example

+0

感謝這項工作就像一個魅力...謝謝... –

+0

不客氣。 – Emissary

0

你可能得到的結果對象嵌套錯誤,因此$xml->Response->UrlInfoResult->Alexa->TrafficData->Rank;中的一個對象爲null。嘗試echo單獨荷蘭國際集團的每一步:

echo $xml->Response; 
echo $xml->Response->UrlInfoResult; 
// etc ... 

如果第一回波返回任何內容,然後檢查是否需要輸出UrlInfoResponse代替或需要先註冊名稱空間。

+0

我沒有嘗試回顯他們一個接一個..直到回聲$ xml-> Response-> UrlInfoResult它的顯示沒有任何在屏幕上,當我嘗試這樣做echo $ xml- >響應 - > UrlInfoResult->的Alexa;它提出了一個錯誤.. –

0

好吧,這太含糊了,但你總是可以打印$ xml值來查看它是否實際上是一個對象,有時會發生路徑錯誤。 試試這個代碼,看看如果XML文檔實際加載:

<?php 

if (file_exists('/path/to/document.xml')) { 
    $xml = simplexml_load_file('/path/to/document.xml'); 

    print_r($xml); 
} else { 
    exit('Failed to open /path/to/document.xml.'); 
} 

>

有了這個,你應該看到XML文檔的內容。

+0

是的它正在加載正確和print_r($ xml給出)SimpleXMLElement對象() –