如何在PHP中解析包含节点属性的SOAP响应

时间:2013-05-31 12:35:06

标签: php xml soap

我很难理解如何在PHP中查看/使用来自SOAP调用的XML结果。我有一个脚本,它向另一台服务器上的脚本发出SOAP请求,并发送一个XML响应。该响应有许多嵌套节点,其中一些具有属性。我能够进行SOAP调用并获得响应,但是,使用var_dump和print_r为我提供了没有属性的XML数组。

以下是代码细分:

PHPH脚本中的代码片段,用于生成SOAP请求

use_soap_error_handler(true);
$client = new SoapClient(null, array("uri" => "Lic", "location" => "http://mydomain.com/Lic.cgi", "trace" => 1));
$assets = $client->Menu($email,$account_id);

预期回复 该调用在另一台服务器上生成以下(样式)XML结果:

<opt>
    <Account>
        <Asset id="1000">
            <Menu type="simple">Software</Menu>
        </Asset>
        <Asset id="2000">
            <Menu type="modal">Software</Menu>
            <Menu type="simple">Demo</Menu>
        </Asset>
    </Account>
</opt>

请注意,Asset和Menu节点具有节点属性(id,type等)。

实际结果 当我在$ assets上执行var_dump或print_r时,我确实得到了成功的结果,但我无法在任何地方看到属性(id,type等)。最终的目标是获取XML数组并将数据写入MySQL表,但我也需要这些属性,并且搜索天数并未产生关于如何在PHP中访问完整数据结果的缺失部分。

VAR DUMP var_dump会产生类似的结果:

object(stdClass)#44 (1) {
  ["Account"]=>
  object(stdClass)#45 (1) {
    ["Asset"]=>
    array(2) {
      [0]=>
      object(stdClass)#46 (1) {
        ["Menu"]=>
        string(12) "Software"
      }
  ....

的print_r print_r($ assets)给出了类似的东西:

stdClass Object
(
    [Account] => stdClass Object
    (
        [Asset] => Array
        (
        [0] => stdClass Object
        (
            [Menu] => Software
        )
        [1] => stdClass Object
        (
        [Menu] => Array
            (
            [0] => Software
                [1] => Demo
            )
            ...    

除了v​​ar_dump和print_r之外,还有另一种方法可以查看结果,以便查看完整数据,包括属性吗?

提前致谢,如果我没有正确地提出问题,我会道歉(如果是的话,请告诉我,以便我可以使用正确的术语进行改写)。

0 个答案:

没有答案