Я пытаюсь разобрать строку 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}
Если бы кто-то мог объяснить мне, какполучить доступ к этим данным, какова логика, которой я должен следовать для доступа к этим данным?
Я знаю, что должен установить namesapce, но, как вы можете видеть из XML, у меня также есть специальный тег: <diffgr:diffgram
любая помощь будет высоко оценена.