simplexml_load_string () ожидает, что параметр 1 будет строкой при разборе этого Soap xml - PullRequest
0 голосов
/ 05 ноября 2018

Я попробовал решения Как проанализировать этот XML-ответ SOAP с помощью PHP simplexml_load_string? , но он не работает.

Может быть, у кого-то есть идея, как проанализировать этот результат Soap XML, вы найдете файл soap.xml, результат и тест

Soap.xml

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" ...>
    <wsdl:documentation>soapExemple</wsdl:documentation>
    <wsdl:types>
        <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://.../xsd">
...

Выход:

<?php
    ini_set("soap.wsdl_cache_enabled", "0");
    const USER = "userHere";
    const PASSWORD = "passHere";
    $credentials = array('login' => USER, 'password' => PASSWORD);
    $options = array("trace" => 1, "exception" => 0, 'encoding' => 'UTF-8');
    $url = "pass/to/wsdl.xml";
    $soap = new SoapClient($url, $credentials);
    var_dump($soap);

    try {
        $result = $soap->__soapCall("reclis_XML", array("parameters"=>array("args0"=>array("METHODHERE" => "01"))));
        var_dump($result);
    } catch (SoapFault $exception) {
        \Zend_Debug::dump( 'Exception Thrown: '.$exception->faultstring);
    }

?>

Результат:

object(stdClass)#6591 (1) {
  ["return"] => string(39171) "<?xml version="1.0" encoding="UTF-8"?>
<RECLIS>
  <RESULT>KO</RESULT>
  <REAL>0</REAL>
  <RUS>
    <REAL>0</REAL>
    <CUSTOMER>
      <CLEMAJ></CLEMAJ>
      <NAME></NAME>
      <LASTNALE>0</LASTNALE>
      <PHONE>0</PHONE>
      <AD></AD>
      <ADDRESS1></ADDRESS1>
      <ADDRESS2></ADDRESS2>
      <CITY></CITY>
      <CODE></CODE>
      <PRICE>0</PRICE>
    </CUSTOMER>
    <CUSTOMER>
      <CLEMAJ></CLEMAJ>
      <NAME></NAME>
      <LASTNALE>0</LASTNALE>
      <PHONE>0</PHONE>
      <AD></AD>
      <ADDRESS1></ADDRESS1>
      <ADDRESS2></ADDRESS2>
      <CITY></CITY>
      <CODE></CODE>
      <PRICE>0</PRICE>
    </CUSTOMER>
    <CUSTOMER>
      <CLEMAJ></CLEMAJ>
      <NAME></NAME>
      <LASTNALE>0</LASTNALE>
      <PHONE>0</PHONE>
      <AD></AD>
      <ADDRESS1></ADDRESS1>
      <ADDRESS2></ADDRESS2>
      <CITY></CITY>
      <CODE></CODE>
      <PRICE>0</PRICE>
    </CUSTOMER>
    ...
  </RUS>
</RECLIS>
"
}

Я пробовал это, но это не работает:

$xml=simplexml_load_string($myXMLData) or die("Error: Cannot create object");
print_r($xml);

У вас есть идея или другое решение для получения моего xml-результата в виде массива

1 Ответ

0 голосов
/ 05 ноября 2018

Вы должны получить строку, обратившись к свойству return

Попробуйте использовать:

$xml=simplexml_load_string($myXMLData->return) or die("Error: Cannot create object");
print_r($xml);
...