Я искал дни для правильного способа чтения XML, который возвращает API ИБП. Я наконец нашел, как подать петицию за курс из пакета для отправки, и теперь я получил XML с ответом.Чтение ИБП XML с PHP
Я не очень хорошо знаком с XML, но могу понять, как это работает с простыми примерами.
Ответ XML является:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<rate:RateResponse xmlns:rate="http://www.ups.com/XMLSchema/XOLTWS/Rate/v1.1">
<common:Response xmlns:common="http://www.ups.com/XMLSchema/XOLTWS/Common/v1.0">
<common:ResponseStatus>
<common:Code>1</common:Code>
<common:Description>Success</common:Description>
</common:ResponseStatus>
<common:Alert>
<common:Code>110971</common:Code>
<common:Description>Your invoice may vary from the displayed reference rates</common:Description>
</common:Alert>
<common:TransactionReference/>
</common:Response>
<rate:RatedShipment>
<rate:Service>
<rate:Code>11</rate:Code>
<rate:Description/>
</rate:Service>
<rate:RatedShipmentAlert>
<rate:Code>110971</rate:Code>
<rate:Description>Your invoice may vary from the displayed reference rates</rate:Description>
</rate:RatedShipmentAlert>
<rate:BillingWeight>
<rate:UnitOfMeasurement>
<rate:Code>KGS</rate:Code>
<rate:Description>Kilograms</rate:Description>
</rate:UnitOfMeasurement>
<rate:Weight>3.0</rate:Weight>
</rate:BillingWeight>
<rate:TransportationCharges>
<rate:CurrencyCode>EUR</rate:CurrencyCode>
<rate:MonetaryValue>21.85</rate:MonetaryValue>
</rate:TransportationCharges>
<rate:ServiceOptionsCharges>
<rate:CurrencyCode>EUR</rate:CurrencyCode>
<rate:MonetaryValue>1.40</rate:MonetaryValue>
</rate:ServiceOptionsCharges>
<rate:TotalCharges>
<rate:CurrencyCode>EUR</rate:CurrencyCode>
<rate:MonetaryValue>23.25</rate:MonetaryValue>
</rate:TotalCharges>
<rate:RatedPackage>
<rate:Weight>1.0</rate:Weight>
</rate:RatedPackage>
<rate:RatedPackage>
<rate:Weight>2.0</rate:Weight>
</rate:RatedPackage>
</rate:RatedShipment>
</rate:RateResponse>
</soapenv:Body>
</soapenv:Envelope>
Я попытался примером, чтобы получить значение с simplexml_load_file();
и я мог бы получить значения из тега (очень простой пример). Но когда я пытаюсь сделать это с этим, я ничего не могу получить, потому что он говорит ошибку beign, а не тип объекта.
Буду очень благодарен, если кто-то знает, как читать этот XML и научить меня, как это сделать.
Спасибо за ваше время, читая это!
PS: Когда я попытался простой пример, я попробовал это и работал:
$school = simplexml_load_file('XOLTResult.xml'); //where is the xml
echo $school->students->student[0]; //finding the first student nam
Это работало правильно, но когда я пытаюсь получить, например, response-> RatedShipment [0] -> Сервис-> Код; */, чтобы получить первый номер/*, появится ошибка.
Можете ли вы опубликовать [код] (http://sscce.org/)? – phihag
Я добавил в конце php, который я использовал для примера, который работал, и попробовал почти то же самое для моего ИБП XML – Ardilla