在使用web service时,当我们使用soap作为传输协议时,我们会收到一个xml格式的返回结果。有时候,我们需要将这个xml数据转换成数组,以便我们更方便地使用这些数据。在php中,这种转换是非常简单的,我们可以使用php的内置函数来完成。
一、SOAP返回值的XML格式示例
在使用web service时,我们一般会通过SOAP协议发送请求,并得到一个XML格式的返回结果。XML格式的返回结果可能会很复杂,但是我们可以通过一些示例来理解它。以下是一个简单的SOAP返回值的XML格式示例:
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://localhost/webservice.php"> <SOAP-ENV:Body> <ns1:response> <ns1:result> <name>John Smith</name> <age>30</age> <country>USA</country> </ns1:result> <ns1:result> <name>Alice Jones</name> <age>25</age> <country>UK</country> </ns1:result> </ns1:response> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
上面的XML代码包含了一个SOAP返回值的示例。它的根节点是
这个XML返回值包含了两个人的信息,我们可以通过PHP将它转换成一个数组,方便我们处理这些数据。
立即学习“PHP免费学习笔记(深入)”;
二、使用PHP的simplexml_load_string()函数转换XML为数组
在PHP中,我们可以使用内置的simplexml_load_string()函数将XML转化为数组。在上面的XML例子中,我们可以使用以下PHP代码将它转为数组:
$xmlstr = '<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://localhost/webservice.php"> <SOAP-ENV:Body> <ns1:response> <ns1:result> <name>John Smith</name> <age>30</age> <country>USA</country> </ns1:result> <ns1:result> <name>Alice Jones</name> <age>25</age> <country>UK</country> </ns1:result> </ns1:response> </SOAP-ENV:Body> </SOAP-ENV:Envelope>'; $xml = simplexml_load_string($xmlstr); $json = json_encode($xml); $array = json_decode($json, true); print_r($array);
在上面的代码中,我们首先将XML字符串复制到$xmlstr变量中,然后使用simplexml_load_string()函数将它转换为一个PHP对象。接下来,我们使用json_encode()和json_decode()函数将PHP对象转化为数组,最后使用print_r()函数打印出这个数组。
运行这个代码,我们将会得到以下的输出:
Array ( [response] => Array ( [result] => Array ( [0] => Array ( [name] => John Smith [age] => 30 [country] => USA ) [1] => Array ( [name] => Alice Jones [age] => 25 [country] => UK ) ) ) )
上面的输出展示了一个PHP数组,其中包含了SOAP返回的XML转化后的数据。我们可以非常方便地使用这些数据进行处理。
三、使用PHP的SimpleXMLElement类
除了上面提到的simplexml_load_string()函数,我们还可以使用PHP内置的SimpleXMLElement类来转换XML为数组。
在下面的代码中,我们使用PHP内置的file_get_contents()函数从指定的URL中获取XML数据:
$xmlstr = file_get_contents('http://localhost/webservice.php'); $xml = new SimpleXMLElement($xmlstr); $json = json_encode($xml); $array = json_decode($json, true); print_r($array);
上面的代码中,我们首先使用file_get_contents()函数获取XML数据,然后使用PHP内置的SimpleXMLElement类将XML转化为PHP对象。接下来,我们使用json_encode()和json_decode()函数将PHP对象转换为数组,最后使用print_r()函数打印出结果。
上面的代码与前面的例子极其类似,区别仅仅在于我们使用了SimpleXMLElement类将XML转换成对象。转换后,我们可以像操作数组一样使用这些数据。
总结
本文介绍了如何使用PHP的内置函数将SOAP返回的XML数据转换成数组。这些技巧可以让我们更加方便地使用web service的返回值,从而加快我们进行开发和集成的速度。无论是使用simplexml_load_string()函数还是SimpleXMLElement类,都可以让我们轻松地将XML转化为PHP数组。
以上就是php怎么将soap返回的xml转成数组的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号