2013-04-03 65 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对象() –