2013-04-03 9 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. , пытаясь таким образом, что РМКО делают это ...Разбор XML-файла с использованием simplexml_load_file возвращает пустой объект

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

, но я получаю ошибку, делая так .it говорит

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

You Вероятно, у объекта был неправильный объект, в результате чего один из объектов в $xml->Response->UrlInfoResult->Alexa->TrafficData->Rank; имеет значение null. Попробуйте echo ИНГ каждый шаг отдельно:

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

Если первое эхо ничего не возвращает, а затем проверить, если нужно вывести UrlInfoResponse вместо или нужно сначала зарегистрироваться пространств имен.

+0

Я попытался эхо их один за другим .. До эха $ xml-> Response-> UrlInfoResult его шоу ничего не отображается на экране, и когда я пытаюсь сделать это echo $ xml- > response-> 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

да, это загрузка correcta и print_r ($ xml дает) SimpleXMLElement Object() –

Смежные вопросы