2010-05-05 3 views
4

Я пытаюсь преобразовать SOAP-ответ в XML.SOAP-ответ на XML с SimpleXML

SOAP имеет конверт и тело

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:Body> 

Когда я пытаюсь преобразовать

$responseXML = simplexml_load_string($string); 

Я получаю

object(SimpleXMLElement)#20 (0) { } 

Если я редактировать $string, как soap:Envelope и soap:Body я могу получить XML.

Что случилось с :? Не удается получить XML.

Надеюсь, это ясно. Кто угодно?

+0

SOAP _is_ XML .. –

ответ

9

SOAP-сообщение является уже XML. Проблема в том, что у него есть пространства имен, поэтому вам нужно обращаться к нему по-разному. (Часть перед двоеточием является идентификатором пространства имен.)

Here (google cached copy) - пример использования пространств имен с SimpleXML.
Here является конкретным примером для чтения сообщений SOAP.

+1

Спасибо, что у меня нет слов! – ntan

1

SimpleXML требует специальной обработки для XML пространства имен (ref.)

+0

Полностью чистый. Но что делать, если я хочу получить доступ, например, xml-> soap: Envelop-> soap: Body-> item1-> item2 – ntan

+0

, потому что «мыло:» не привязано к пространство имен в этом примере. что префикс пространства имен не должен совпадать, а само пространство имен. – Dormilich

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