Как анализировать xml с помощью пространств имен и специальных тегов

Я пытаюсь разобрать строку xml, но кажется невозможным понять ее правильно, файл xml:

<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>
<GetBookableApartmentsResponse xmlns = "http://tempuri.org/">
<GetBookableApartmentsResult>
<xs:schema id = "BookableApartments" xmlns = "" xmlns:xs = "http://www.w3.org/2001/XMLSchema" xmlns:msdata = "urn:schemas-microsoft-com:xml-msdata">
   <xs:element name = "BookableApartments" msdata:IsDataSet = "true" msdata:UseCurrentLocale = "true">
      <xs:complexType>
         <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name = "Apartment">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name = "Name" type = "xs:string" minOccurs = "0"/>
                     <xs:element name = "BookingUrl" type = "xs:string" minOccurs = "0"/>
                     <xs:element name = "BookingUrlMobile" type = "xs:string" minOccurs = "0"/>
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
         </xs:choice>
      </xs:complexType>
   </xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata = "urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr = "urn:schemas-microsoft-com:xml-diffgram-v1">
   <BookableApartments xmlns = "">
      <Apartment diffgr:id = "Apartment1" msdata:rowOrder = "0">
         <Name>10419-0001</Name>
         <BookingUrl>http:/test.com</BookingUrl>
         <BookingUrlMobile></BookingUrlMobile>
      </Apartment>
      <Apartment diffgr:id = "Apartment2" msdata:rowOrder = "1">
         <Name>10419-0002</Name>
         <BookingUrl>http:test.com</BookingUrl>
         <BookingUrlMobile></BookingUrlMobile>
      </Apartment>

Я хочу получить данные от всех дочерних элементов BookableApartments или хочу получить данные Apartment.

Я считаю, что я установил правильное пространство имен:

$simpleXml = new \SimpleXmlElement($response);

$simpleXml->registerXPathNamespace('prefix', 'http://tempuri.org/');

$res = $simpleXml->xpath('//prefix:GetBookableApartmentsResponse');

$res = $res[0]->children('urn:schemas-microsoft-com:xml-diffgram-v1');

var_dump($res)exit;

но все время получаю результат: SimpleXMLElement {#957}

Если бы кто-нибудь мог объяснить мне, как получить доступ к этим данным, какова логика, которой мне нужно следовать, чтобы получить доступ к этим данным?

Я знаю, что мне нужно установить nameapce, но, как вы можете видеть из xml, у меня также есть специальный тег: <diffgr:diffgram, любая помощь будет принята с благодарностью.

Почему вы разбираете файл вручную? Это похоже на службу SOAP, поэтому вы должны взаимодействовать с ней через PHP SOAP класс

MonkeyZeus 24.09.2018 17:28

@MonkeyZeus, это ответ от guzzle, не могли бы вы мне помочь и уточнить это?

User_4444 24.09.2018 17:50

Я не знаком с Guzzle, посмотрите stackoverflow.com/q/19170846/2191572

MonkeyZeus 24.09.2018 18:00

@MonkeyZeus Я следил за тем потоком, и именно здесь я задал вопрос, который получил ответ SimpleXMLElement {#955} не может даже увидеть содержимое объекта в дампе

User_4444 24.09.2018 18:02

@MonkeyZeus Я даже попытался использовать SoapClient в ответ на свой {943} немного.

User_4444 24.09.2018 18:07
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
48
0

Другие вопросы по теме