2017-02-07 12 views
2

Я пытаюсь создать запрос на мыло, и мне нужно преобразовать soap xml в php-массив. но я застрял в позиции, где я не могу понять, как правильно установить атрибуты массива. Я очень новичок в мыле, и хорошее объяснение будет оценено. Вот что я сделал до сих пор.конвертировать Soap XML в массив PHP

то, что я хочу, чтобы создать

<arg0> 
    <ns2:coverType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:type="ns2:FamilyCoverType"> 
     <ns2:abc>1978-04-03</ns2:abc> 
     <ns2:def>1980-04-03</ns2:def> 
     <ns2:pqr>2016-04-10</ns2:pqr> 
     <ns2:xyz>2016-05-03</ns2:xyz> 
    </ns2:coverType> 
</arg0> 

Мой массив

$data = array(
     'arg0' => array(
      'coverType' => array(
       'abc' => $abc, 
       'def' => $def, 
       'pqr' => $pqr, 
       'xyz' => $xyz, 
      ) 
     ) 
    ); 

все нормально, кроме

XSI: тип = "NS2: FamilyCoverType"

Как могу ли я установить атрибут выше в моем массиве? Помощь Pls.

+0

У вас есть URL WSDL, который вы можете добавить к вопросу? –

+0

@ KrisPeeling Извините. Я не могу поделиться, так как это конфиденциальная информация. –

+0

Просто для подтверждения, вы спрашиваете, как преобразовать XML в массив PHP? или массив в XML? –

ответ

1

Я настоятельно рекомендую использовать WSDL для php-генератора, например PackageGenerator, так как вы не будете удивляться, как структурировать ваш запрос. Если вы используете Eclipse PDT или любую другую хорошую среду IDE с созданным PHP SDK, вы будете отправлять запросы через несколько секунд. Более того, вы легко справитесь с ответом, поскольку у вас будут известные объекты PHP, поскольку они были бы сгенерированы как классы PHP в SDK.

+0

Большое спасибо за ответ. Я буду работать над этим. –

0

После двух суточных недель я смог, наконец, прийти к решению. Поэтому я отправляю свой ответ здесь, чтобы кто-то мог сэкономить свое время.

мы можем сделать выше вещи, как это легко,

$param = new \SoapVar(' 
      <arg0> 
       <ns2:coverType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:FamilyCoverType"> 
        <ns2:abc>' . $data['abc'] . '</ns2:abc> 
        <ns2:def>' . $data['def'] . '</ns2:def> 
        <ns2:pqr>' . $data['pqr'] . '</ns2:pqr> 
        <ns2:xyz>' . $data['xyz'] . '</ns2:xyz> 
       </ns2:coverType> 
      </arg0>', XSD_ANYXML); 

Тогда мы можем получить ответ, как это,

$response = $client->your_calling_function($param); 

Насколько мне кажется,

XSD_ANYXML

- это ключ.

Если у кого-то все еще есть проблемы с этим, я очень рад помочь. не стесняйтесь обращаться за помощью.

 Смежные вопросы

  • Нет связанных вопросов^_^