#php #xml #soap
Вопрос:
Это ответ на запрос soap.
<?xml version="1.0" encoding="utf-8"?>
<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>
<GetConfigurationInfoResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://micros-hosting.com/EGateway/">
<configInfoResponse>
<OperationalResult>
<Success>true</Success>
<ErrorCode>Success</ErrorCode>
<ErrorMessage>Success</ErrorMessage>
</OperationalResult>
<ConfigInfoType>
<EConfigurationInfoType>MENUITEMDEFINITIONS</EConfigurationInfoType>
</ConfigInfoType>
**<MenuItemDefinitions>amp;<?xml version="1.0" encoding="utf-8"?amp;>amp;<?micros-type Micros.PosCore.DataStore.DbRecords.DbMenuItemDefinition[], PosCore, Version=2.5.0.0, Culture=neutral, PublicKeyToken=null?amp;>amp;<ArrayOfDbMenuItemDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"amp;>amp;<DbMenuItemDefinitionamp;>amp;<NameOptionsamp;>0000000amp;</NameOptionsamp;>amp;<MenuItemDefIDamp;>4055amp;</MenuItemDefIDamp;>amp;<HierStrucIDamp;>25amp;</HierStrucIDamp;>amp;<MenuItemMasterIDamp;>1570amp;</MenuItemMasterIDamp;>amp;<SequenceNumamp;>1amp;</SequenceNumamp;>amp;<Name1amp;>amp;<StringNumberIdamp;>8507amp;</StringNumberIdamp;>amp;<StringTextamp;>=Breakfast=amp;</StringTextamp;>amp;</Name1amp;>amp;<Name2amp;>amp;<StringNumberIdamp;>8508amp;</StringNumberIdamp;>amp;<StringText /amp;>amp;</Name2amp;>amp;<SluSortamp;>0amp;</SluSortamp;>amp;<NluNumberamp;>0amp;</NluNumberamp;>amp;<Tareamp;>0amp;</Tareamp;>amp;<Surchargeamp;>0amp;</Surchargeamp;>amp;<IconNumberamp;>0amp;</IconNumberamp;>amp;<OptionBitsamp;>00000000amp;</OptionBitsamp;>amp;<SpecialCountamp;>0amp;</SpecialCountamp;>amp;<PrepTimeamp;>0amp;</PrepTimeamp;>amp;<Name3amp;>amp;<StringNumberIdamp;>0amp;</StringNumberIdamp;>amp;<StringText /amp;>amp;</Name3amp;>amp;<LongDescriptoramp;>amp;<StringNumberIdamp;>0amp;</StringNumberIdamp;>amp;<StringText /amp;>amp;</LongDescriptoramp;>amp;<MenuItemClassObjNumamp;>0amp;</MenuItemClassObjNumamp;>amp;<NluGroupIndexamp;>0amp;</NluGroupIndexamp;>amp;<SluIndexamp;>0amp;</SluIndexamp;>amp;<HhtSluIndexamp;>0amp;</HhtSluIndexamp;>amp;<MainLevelsamp;>00000000amp;</MainLevelsamp;>amp;<SubLevelsamp;>00000000amp;</SubLevelsamp;>amp;<PosRefamp;>0amp;</PosRefamp;>amp;<PrintClassObjNumamp;>0amp;</PrintClassObjNumamp;>amp;<PrefixLevelOverrideamp;>0amp;</PrefixLevelOverrideamp;>amp;<GuestCountamp;>0amp;</GuestCountamp;>amp;<MenuLevelEntries /amp;>amp;<DefaultCondiments /amp;>amp;<NextScreen /amp;>amp;<MiMasterObjNumamp;>10010000amp;</MiMasterObjNumamp;>amp;<CheckAvailabilityamp;>falseamp;</CheckAvailabilityamp;>amp;<OutOfMenuItemamp;>falseamp;</OutOfMenuItemamp;>amp;</DbMenuItemDefinitionamp;>amp;<DbMenuItemDefinition;amp;</ArrayOfDbMenuItemDefinitionamp;></MenuItemDefinitions>**
</configInfoResponse>
</GetConfigurationInfoResponse>
</soap:Body>
</soap:Envelope>
Как я могу извлечь из этого выгоду <MenuItemDefinitions></MenuItemDefinitions>
? Этот xml-элемент внутри других XML-данных. Как сказать об этом виде XML?
Как отфильтровать это значение с помощью PHP? Мне нужно только получить значение из внутреннего <MenuItemDefinitions></MenuItemDefinitions>
значения xml.
Это php-код запроса soap.
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://192.168.5.10:8080/EGateway/SimphonyPosApiWeb.asmx");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, "<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetConfigurationInfo>
<vendorCode />
<employeeObjectNum>10009</employeeObjectNum>
<configurationInfoType>
<int>1</int>
</configurationInfoType>
<revenueCenter>5</revenueCenter>
<configInfoResponse />
</GetConfigurationInfo>
</soap:Body>
</soap:Envelope>");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Content-Type: text/xml;",
"SOAPAction: http://192.168.5.10:8080/EGateway/GetConfigurationInfo"
));
$response = curl_exec($ch);
curl_close($ch);
var_dump($response);
Комментарии:
1. В чем ваша проблема, выкапывание содержимого
<MenuItemDefinitions>
или осознание того, что оно тоже является XML-документом, и поэтому его необходимо рассматривать как таковой2. @RiggsFolly Спасибо вам за ваш ответ. Моя проблема в том, что мне нужно преобразовать этот ответ <MenuItemDefinitions> в xml и получить значение из этого xml. Это <MenuItemDefinitions> внутри названия пунктов меню доступно, мне нужно получить это значение.
3. Так что покажите код, который читает этот xmlDoc, пожалуйста
4. Пожалуйста, внесите все это в вопрос, используя ссылку РЕДАКТИРОВАНИЯ под вопросом, никто не может прочитать код в комментарии
5. @RiggsFolly Я уже отредактировал вопрос.