2011-07-20 39 views
0

這裏是我的XML對象:http://pastebin.com/0L8vf0ja 這是一個從創造:如何在PHP中解析複雜的XML-RPC結構?

<?xml version="1.0" encoding="utf-8"?> 
<methodResponse><params><param><value><struct><member><name>result</name><value><struct><member><name>application_instance_id</name><value><i4>89</i4></value></member></struct></value></member><member><name>status</name><value><i4>0</i4></value></member></struct></value></param></params></methodResponse> 

我知道高達這個水平:

$ApplicationInstanceID = (int)(string)$data->params->param->value->struct->member-> 

但是,從這裏,你在引擎收錄看到,它成爲一個數組的對象 - 我不知道如何繼續。

有什麼想法嗎?

+1

由於原始XML在瀏覽器中看不到,因此這裏更新了粘貼:http://pastebin.com/M48Hf5fV – Carmageddon

回答

2

通過訪問一個數組:

$x = '<root><child><foo>23</foo><foo>34</foo></child></root>'; 
$xml = new SimpleXMLElement($x); 
var_dump($xml->child->foo[0]); 
var_dump($xml->child->foo[1]); 

但是,如果你把它激活,xmlrpc_decode功能也許是更容易使用。

var_dump(xmlrpc_decode($yourxml)); 
array(2) { 
    ["result"]=> 
    array(1) { 
    ["application_instance_id"]=> 
    int(89) 
    } 
    ["status"]=> 
    int(0) 
} 
+0

啊,這就是爲什麼我的編輯被阻止,已經修復,謝謝troelskn。 – Wrikken

+0

謝謝!好主意,但..如何啓用該功能?我沒有在我的php.ini(centos服務器)中找到一個; extension = php_xmlrpc.dll。 – Carmageddon

+0

dll是windows的,使用'yum install php-xmlrpc' – Wrikken

2
$ApplicationInstanceID = (int)(string)$data->params->param->value->struct->member[0]-> // first <member> 
$ApplicationInstanceID = (int)(string)$data->params->param->value->struct->member[1]-> // second <member> 
1

我有點困惑 - 它看起來像你已經解析XML轉換爲PHP對象......所以現在只要訪問數組的子成員,你會數組的任何元素:

$data->params->param->value->struct->member[0] 

而且,對於它的屬性:

$data->params->param->value->struct->member[0]->name