1

私は SOAP の経験はあまりありませんが、自分の仕事のためにバリデーターを作成し、特定の SOAP wsdl を使用する必要があります。

接続と呼び出しをセットアップしましたが、すべて正常に動作しますが、応答データは XML であると想定して受信します。出力のごく一部を以下に示します。

<user id=”54354334543”&gt;
<firstname>My firstname</firstname>
<lastname>My lastname</lastname>
<email>my_email@text.com</email>
<nickname>My Nickname</nickname>
<source>Update_and_add</source>
</user>

この応答は検証の 1 つのステップであるため、 や などの単一のアイテムを取得し、それらをさらに検索するために使用できるようにする必要があります。

だから私の質問は、アイテムを取り出すためにこれをどのように解析するのですか? さまざまなアプローチを試して配列に変換しましたが、うまくいきませんでした。

提案や助けをいただければ幸いです。

よろしく、
- メスティカ

4

3 に答える 3

1
$xml = '<user id="54354334543">
<firstname>My firstname</firstname>
<lastname>My lastname</lastname>
<email>my_email@text.com</email>
<nickname>My Nickname</nickname>
<source>Update_and_add</source>
</user>';
print_r(json_decode(json_encode(simplexml_load_string($xml))));

出力:

stdClass Object
(
    [@attributes] => stdClass Object
        (
            [id] => 54354334543
        )

    [firstname] => My firstname
    [lastname] => My lastname
    [email] => my_email@text.com
    [nickname] => My Nickname
    [source] => Update_and_add
)

したがって、次のようなことができます。

$data = json_decode(json_encode(simplexml_load_string($xml)));
echo $data->nickname;
于 2012-09-18T11:59:46.377 に答える
0

こんな機能もあります:

http://php.net/manual/en/book.simplexml.php#108035

最初に JSON ソリューションによるフィルタリングを試してみますが、これはおそらくよりパフォーマンスが高く、より明確になるでしょう。

于 2012-09-18T15:20:33.053 に答える
0

これを試して

<?php
$k = '<user id="54354334543">
<firstname>My firstname</firstname>
<lastname>My lastname</lastname>
<email>my_email@text.com</email>
<nickname>My Nickname</nickname>
<source>Update_and_add</source>
</user>';
$xml = simplexml_load_string($k);
echo $id =  $xml['id']; 
echo "<br>".$firstname =$xml->firstname;
?>

出力

54354334543
My firstname
于 2013-08-14T12:29:46.303 に答える