<?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文档的排名。 在尝试的同时,我正在做的是......
$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 :(得分:8)
解析器返回一个空对象,因为根据documentation你必须指定带前缀的命名空间 - 所以你想要使用类似的东西:
simplexml_load_file('/path/to/file.xml', null, null, 'aws', true);
答案 1 :(得分:0)
您可能导致结果对象嵌套错误,因此$xml->Response->UrlInfoResult->Alexa->TrafficData->Rank;
中的一个对象为null。分别尝试echo
每一步:
echo $xml->Response;
echo $xml->Response->UrlInfoResult;
// etc ...
如果第一个echo没有返回任何内容,那么请检查是否需要输出UrlInfoResponse
或者需要先注册名称空间。
答案 2 :(得分: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.');
}
&GT;
有了这个,您应该看到xml文档的内容。