2011-07-20 11 views
0

は私のXMLオブジェクトです:から作成されたhttp://pastebin.com/0L8vf0jaPHPで複雑な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

これは編集がブロックされていたためです。 – 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

私は少し混乱している - あなたはすでにあなたは、配列のすべての要素を同じようにだから今だけの配列のsubmembersにアクセスする... PHPオブジェクトにXMLを解析してきたように見えます:

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

そして、それは性質だため:

$data->params->param->value->struct->member[0]->name 
関連する問題