有人知道如何访问SOAP API返回的SimpleXMLElement对象中的[@attributes]
数组吗?
检索[@attributes]
数组的TotalAmount
元素的值失败。@
是我被卡住的地方。
下面是返回完整响应的代码的结尾:
$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
值的过程中,我遇到了一个死胡同:
$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
)
)
)
)
发布于 2018-05-31 08:08:41
解决方案
$postage = $xml_response->CalculatePostageRateResponse->PostageRateResponse->PostagePrice->Postage[0]['TotalAmount'];
https://stackoverflow.com/questions/50614059
复制相似问题