Как добавить пространство имен в ответ SOAP?

#php #soapserver

#php #soapserver

Вопрос:

Мой SOAP-сервер возвращает следующий ответ:

    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://uws.provider.com/">
       <SOAP-ENV:Body>
          <ns1:PerformTransactionResult>
             <status>201</status>
          </ns1:PerformTransactionResult>
       </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
  

Но мне нужна следующая структура:

 <?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Body>
      <ns2:PerformTransactionResult xmlns:ns2="http://uws.provider.com/">
         <status>0</status>
      </ns2:PerformTransactionResult>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope> 
  

Комментарии:

1. Можете ли вы показать код, который создает ответ.

2. Вы уверены, что это необходимо? Для любого нормального анализатора XML эти два ответа полностью эквивалентны: xmlns:... атрибут определяет локальный псевдоним, который вступает в силу для всех дочерних узлов, поэтому в обоих случаях PerformTransactionResult находится в http://uws.provider.com/ пространстве имен, а status — в пространстве имен null. Поэтому принудительное изменение форматирования может потребовать использования манипуляций со строками, чтобы избежать выбора представления кодом генерации XML.