从soap服务访问对象

时间:2016-06-14 16:03:14

标签: php xml laravel soap

我正在尝试从soap服务访问对象。我的目标是获取ID为53的属性中的值。在此之前,我使用simplexml_load_string来获取下面看到的对象。但是在尝试使用 - >访问对象时或['']关键符号会引发错误。我相信密钥中的@导致了问题。

我得到以下结果:

作为vardump:

object(SimpleXMLElement)[1951]
  public '@attributes' => 
    array (size=1)
      'id' => string '53' (length=2)

作为dd结果:

SimpleXMLElement {#1951 ▼
  +"@attributes": array:1 [▼
    "id" => "53"
  ]
}

调试部分:

 $result =$service->call('DisplayCategories', [$data]);

            $result = simplexml_load_string((string)$result->DisplayCategoriesResult->any);
           // dd($result);
            $result = $result->categories->category;
            //dd($result);
            $tempArr = array();

            foreach($result as $item)
            {
              //  var_dump(html_entity_decode($item));
                var_dump($item);
                dd(((object)$item));
              //  dd(preg_replace(array("@"),'',$item));
              //  dd(@simplexml_load_string($item));
                dd($item->attributes('id'));
                $simple = $item->attributes('id');
                $resulters = ($item->attributes('id'));
               dd($resulters);
            }

            $this->setResult($result);
        });

1 个答案:

答案 0 :(得分:2)

@attributes是一个返回数组的函数,不直接访问它。只需将其别名为变量,然后在完成后使用索引。

$atts = $item->attributes();
dd($atts['id']);

另外,作为旁注,cast您的对象在string转储之前转移到simple xml object,否则您会看到一些你可能没有的时髦的东西。无论如何都要找。