Я пытаюсь разобрать строку 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, любая помощь будет принята с благодарностью.
@MonkeyZeus, это ответ от guzzle, не могли бы вы мне помочь и уточнить это?
Я не знаком с Guzzle, посмотрите stackoverflow.com/q/19170846/2191572
@MonkeyZeus Я следил за тем потоком, и именно здесь я задал вопрос, который получил ответ SimpleXMLElement {#955} не может даже увидеть содержимое объекта в дампе
@MonkeyZeus Я даже попытался использовать SoapClient в ответ на свой {943} немного.






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