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>

此响应是验证中的一个步骤,因此我必须能够检索单个项目,例如并将它们用于进一步查找。

所以我的问题是,我如何解析这个以便取出物品?我尝试了不同的方法并将其转换为数组,但我没有任何运气这样做。

任何建议或帮助将不胜感激。

问候,
- 梅斯蒂卡

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 回答