Alex Oliveira Dos Santos 0 Denunciar post Postado Abril 21, 2018 Tentei vários códigos porem não consegui extrair os dados individuais de um retorno de webservice que recebo uma string contendo um objeto xml segue abaixo códigos utilizados e retorno <?php $client = new SoapClient('http://xxxWebService.asmx?wsdl'); $function = 'getEstoque'; $arguments= array('getEstoque' => array( 'emp_id'=>"4", 'grupo'=>"", 'segmento'=>"", 'produto_id'=>"20", 'cor_id'=>"", 'tamanho'=>"" )); $options = array('location' => 'http://xxxWebService.asmx?wsdl'); $result = $client->__soapCall($function, $arguments, $options); echo'<pre>'; var_dump($result);//retorna um object(stdClass)#2 (1) {["getEstoqueResult"]=>string(2717) echo'</pre>'; ?> retorno recebido que preciso capturar os dados individualmente <pre>object(stdClass)#2 (1) { ["getEstoqueResult"]=> string(2717) "<NewDataSet> <produto> <produto_id>20</produto_id> <produto_tamanho>P</produto_tamanho> <cor_id>1</cor_id> <qtd_estoque>200</qtd_estoque> <cor>DIVERSAS</cor> </produto> <produto> <produto_id>20</produto_id> <produto_tamanho>PP</produto_tamanho> <cor_id>1</cor_id> <qtd_estoque>200</qtd_estoque> <cor>DIVERSAS</cor> </produto> <produto> <produto_id>20</produto_id> <produto_tamanho>G</produto_tamanho> <cor_id>1</cor_id> <qtd_estoque>210</qtd_estoque> <cor>DIVERSAS</cor> </produto> <produto> <produto_id>20</produto_id> <produto_tamanho>GG</produto_tamanho> <cor_id>1</cor_id> <qtd_estoque>200</qtd_estoque> <cor>DIVERSAS</cor> </produto> <produto> <produto_id>20</produto_id> <produto_tamanho>M</produto_tamanho> <cor_id>1</cor_id> <qtd_estoque>200</qtd_estoque> <cor>DIVERSAS</cor> </produto> <produto> <produto_id>20</produto_id> <produto_tamanho>G</produto_tamanho> <cor_id>2</cor_id> <qtd_estoque>200</qtd_estoque> <cor>PRETA</cor> </produto> <produto> <produto_id>20</produto_id> <produto_tamanho>GG</produto_tamanho> <cor_id>2</cor_id> <qtd_estoque>200</qtd_estoque> <cor>PRETA</cor> </produto> <produto> <produto_id>20</produto_id> <produto_tamanho>M</produto_tamanho> <cor_id>2</cor_id> <qtd_estoque>200</qtd_estoque> <cor>PRETA</cor> </produto> <produto> <produto_id>20</produto_id> <produto_tamanho>P</produto_tamanho> <cor_id>2</cor_id> <qtd_estoque>200</qtd_estoque> <cor>PRETA</cor> </produto> <produto> <produto_id>20</produto_id> <produto_tamanho>PP</produto_tamanho> <cor_id>2</cor_id> <qtd_estoque>200</qtd_estoque> <cor>PRETA</cor> </produto> <produto> <produto_id>20</produto_id> <produto_tamanho>M</produto_tamanho> <cor_id>4</cor_id> <qtd_estoque>200</qtd_estoque> <cor>VERMELHO</cor> </produto> <produto> <produto_id>20</produto_id> <produto_tamanho>P</produto_tamanho> <cor_id>4</cor_id> <qtd_estoque>200</qtd_estoque> <cor>VERMELHO</cor> </produto> <produto> <produto_id>20</produto_id> <produto_tamanho>PP</produto_tamanho> <cor_id>4</cor_id> <qtd_estoque>200</qtd_estoque> <cor>VERMELHO</cor> </produto> <produto> <produto_id>20</produto_id> <produto_tamanho>G</produto_tamanho> <cor_id>4</cor_id> <qtd_estoque>200</qtd_estoque> <cor>VERMELHO</cor> </produto> <produto> <produto_id>20</produto_id> <produto_tamanho>GG</produto_tamanho> <cor_id>4</cor_id> <qtd_estoque>200</qtd_estoque> <cor>VERMELHO</cor> </produto> </NewDataSet>" } </pre> eu preciso pegar por exemplo, apenas o produto_id e o cor_id Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Abril 25, 2018 A forma que você recebe o retorno do WS deve ser definido no WSDL. Com o uso do var_dump, é possível verificar que é retornado apenas um valor, que você pode recuperá-lo assim: echo $result->getEstoqueResult; Neste caso em específico, eles definiram que retornaria uma string e essa string é um XML. A partir disso, não há nada de errado com o retorno da classe SoapClient (exceto que o WS não foi bem escrito/desenvolvido). A partir de agora, o que você deve fazer, é interpretar o XML. Podes olhar o seguinte link: Compartilhar este post Link para o post Compartilhar em outros sites