首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >XML API响应中的访问数组已转换为PHP对象

XML API响应中的访问数组已转换为PHP对象
EN

Stack Overflow用户
提问于 2018-05-31 06:16:08
回答 1查看 23关注 0票数 0

有人知道如何访问SOAP API返回的SimpleXMLElement对象中的[@attributes]数组吗?

检索[@attributes]数组的TotalAmount元素的值失败。@是我被卡住的地方。

下面是返回完整响应的代码的结尾:

代码语言:javascript
复制
$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 '</pre>';

在尝试获取TotalAmount值的过程中,我遇到了一个死胡同:

代码语言:javascript
复制
$postage = $xml_response->CalculatePostageRateResponse->PostageRateResponse->PostagePrice->Postage

这将检索我想要的那部分数据,但是我不知道如何访问[@attributes]数组。

代码语言:javascript
复制
SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [TotalAmount] => 8.15
        )

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

如果有任何帮助,我将不胜感激。

下面是完整的$xml_response:

代码语言:javascript
复制
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
                        )

                )

        )

)
EN

回答 1

Stack Overflow用户

发布于 2018-05-31 08:08:41

解决方案

代码语言:javascript
复制
$postage = $xml_response->CalculatePostageRateResponse->PostageRateResponse->PostagePrice->Postage[0]['TotalAmount'];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50614059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档