Доступ к xml-узлу soap в PHP

#php #xml #soap

#php #xml #soap

Вопрос:

После того, как я целый день бился головой о стену, я просто думаю, что мне нужна помощь для этого. Я получаю следующий ответ от вызова soap :

 <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <SearchBrochuresResponse xmlns="http://services.iceportal.com/service">
            <SearchBrochuresResult>
                <pageNumber>0</pageNumber>
                <brochures>
                    <SearchBrochure>
                    <iceID>10427</iceID>
                    <city>Acapulco</city>
            </SearchBrochure>
        </brochures>
    </SearchBrochuresResult>
</SearchBrochuresResponse>
</soap:Body>
</soap:Envelope>
  

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

Большое спасибо за вашу помощь.

Ответ №1:

Предположим, что ваши XML-данные находятся в переменной $data , из которой вы могли бы создать простой XML-объект, а затем получить доступ к его узлам следующим образом (пример для получения iceID ):

 $xml = simplexml_load_string($data);

$iceID = (string)$xml->children('soap', true)
    ->Body->children()
    ->SearchBrochuresResponse
    ->SearchBrochuresResult
    ->brochures
    ->SearchBrochure
    ->iceID;
  

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

1. Безупречно!! Большое спасибо, приятель, ты спас меня от того, чтобы разбить голову о мой стол!! Еще раз спасибо!!

Ответ №2:

Вы могли бы изучить XPath, метод, используемый для навигации и выбора частей XML-документа. Википедия на XPath

Если вам нужна дополнительная помощь, пожалуйста, отправьте более конкретный вопрос. Что вы пробовали? Вам нужно только извлечь это конкретное значение?

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

1. Да, я пробовал способ XPath, но не смог заставить его работать.