PHP:解析SOAP响应

时间:2012-09-18 11:44:36

标签: php parsing soap xsd xml-parsing

我没有太多使用SOAP的经验,但我需要为我的工作和使用特定的SOAP wsdl构建验证器。

我已经设置了连接和调用,一切正常但我收到的响应数据是我假设的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>

此回复是验证的一个步骤,因此我可以检索单个项目,例如和,并将其用于进一步查找。

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

非常感谢任何建议或帮助。

的问候,
- 梅斯蒂卡

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

还有这个功能:

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

虽然我首先尝试通过JSON解决方案进行过滤,但这可能会更高效,更清晰。

答案 2 :(得分: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