Массив доступа в ответе API XML, преобразованный в объект PHP - PullRequest
0 голосов
/ 31 мая 2018

Кто-нибудь знает, как получить доступ к массиву [@attributes] в объекте SimpleXMLElement, возвращаемом SOAP API?

Мне не удается получить значение элемента TotalAmount массива [@attributes].@ - это то место, где я застрял.

Вот конец кода, который возвращает полный ответ:

<code>$response = curl_exec($ch);
$xml = simplexml_load_string($response, 'SimpleXMLElement', LIBXML_NOWARNING);
$xml_response = $xml->children('http://schemas.xmlsoap.org/soap/envelope/')->Body->children();
echo '<pre>';
print_r($xml_response);
echo '
';

Пытаясь получить значение TotalAmount, я захожу здесь в тупик:

$postage = $xml_response->CalculatePostageRateResponse->PostageRateResponse->PostagePrice->Postage

Это извлекает часть данных, которую я хочу, но не могувыяснить, как получить доступ к массиву [@attributes].

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [TotalAmount] => 8.15
        )

    [MailService] => Priority Mail
    [Zone] => 5
    [IntraBMC] => false
    [Pricing] => CommercialBase
)

Буду очень признателен за любую помощь.

Вот весь $ xml_response:

SimpleXMLElement Object
(
    [CalculatePostageRateResponse] => SimpleXMLElement Object
        (
            [PostageRateResponse] => SimpleXMLElement Object
                (
                    [Status] => 0
                    [Zone] => 5
                    [PostagePrice] => SimpleXMLElement Object
                        (
                            [@attributes] => Array
                                (
                                    [TotalAmount] => 8.15
                                )

                            [MailClass] => Priority
                            [Postage] => SimpleXMLElement Object
                                (
                                    [@attributes] => Array
                                        (
                                            [TotalAmount] => 8.15
                                        )

                                    [MailService] => Priority Mail
                                    [Zone] => 5
                                    [IntraBMC] => false
                                    [Pricing] => CommercialBase
                                )

                            [Fees] => SimpleXMLElement Object
                                (
                                    [@attributes] => Array
                                        (
                                            [TotalAmount] => 0
                                        )

                                    [CertificateOfMailing] => 0
                                    [CertifiedMail] => 0
                                    [CollectOnDelivery] => 0
                                    [DeliveryConfirmation] => 0
                                    [ElectronicReturnReceipt] => 0
                                    [InsuredMail] => 0
                                    [RegisteredMail] => 0
                                    [RestrictedDelivery] => 0
                                    [ReturnReceipt] => 0
                                    [ReturnReceiptForMerchandise] => 0
                                    [SignatureConfirmation] => 0
                                    [SpecialHandling] => 0
                                    [MerchandiseReturn] => 0
                                    [OpenAndDistribute] => 0
                                    [AdultSignature] => 0
                                    [AdultSignatureRestrictedDelivery] => 0
                                    [LiveAnimalSurcharge] => 0
                                    [FragileHandling] => 0
                                    [AMDelivery] => 0
                                    [GroupedExtraServices] => SimpleXMLElement Object
                                        (
                                            [@attributes] => Array
                                                (
                                                    [Services] => 
                                                )

                                            [FeeAmount] => 0
                                        )

                                )

                            [DeliveryTimeDays] => 2
                            [EstimatedDeliveryDate] => 6/1/2018
                            [DdpRate] => 0
                        )

                )

        )

)

1 Ответ

0 голосов
/ 31 мая 2018

Раствор

$postage = $xml_response->CalculatePostageRateResponse->PostageRateResponse->PostagePrice->Postage[0]['TotalAmount'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...