0

このような「初心者」の質問をしてすみませんが、過去数時間、返された xml をループする方法の簡単な例を見つけようとしましたが、どこにも行きません。xml を循環して、注文ごとに「Amount」属性と「AmazonOrderId」属性を取得できるようにしたいだけです。ループする方法も、関連するデータを取得する方法もわかりません。

SimpleXMLElement Object
(
    [ListOrdersResult] => SimpleXMLElement Object
        (
            [Orders] => SimpleXMLElement Object
                (
                    [Order] => Array
                        (
                            [0] => SimpleXMLElement Object
                                (
                                    [ShipmentServiceLevelCategory] => SecondDay
                                    [OrderTotal] => SimpleXMLElement Object
                                        (
                                            [Amount] => 5.93
                                            [CurrencyCode] => USD
                                        )

                                    [SellerOrderId] => 107-1261608-7067458
                                    [FulfillmentChannel] => AFN
                                    [BuyerEmail] => 5qhs64ktb88pdsj@marketplace.amazon.com
                                    [OrderStatus] => Shipped
                                    [BuyerName] => Derrick D Vann
                                    [ShipServiceLevel] => SecondDay
                                    [LastUpdateDate] => 2013-03-13T02:20:31Z
                                    [PurchaseDate] => 2013-03-11T06:14:40Z
                                    [NumberOfItemsUnshipped] => 0
                                    [MarketplaceId] => ATVPDKIKX0DER
                                    [SalesChannel] => Amazon.com
                                    [ShippingAddress] => SimpleXMLElement Object
                                        (
                                            [Phone] => 202 746-2567
                                            [PostalCode] => 20001-4040
                                            [Name] => Derrick Vann
                                            [CountryCode] => US
                                            [StateOrRegion] => DC
                                            [AddressLine1] => 2120 Vermont Ave NW Apt 117
                                            [City] => Washington
                                        )

                                    [NumberOfItemsShipped] => 1
                                    [AmazonOrderId] => 107-1261608-7067458
                                    [PaymentMethod] => Other
                                )

                            [1] => SimpleXMLElement Object
                                (
                                    [ShipmentServiceLevelCategory] => Expedited
                                    [OrderTotal] => SimpleXMLElement Object
                                        (
                                            [Amount] => 23.30
                                            [CurrencyCode] => USD
                                        )

                                    [SellerOrderId] => 104-9066827-4446667
                                    [FulfillmentChannel] => AFN
                                    [BuyerEmail] => 6kfc88nrsnm83fq@marketplace.amazon.com
                                    [OrderStatus] => Shipped
                                    [BuyerName] => Quoc Bui
                                    [ShipServiceLevel] => Expedited
                                    [LastUpdateDate] => 2013-03-13T09:34:26Z
                                    [PurchaseDate] => 2013-03-11T08:07:13Z
                                    [NumberOfItemsUnshipped] => 0
                                    [MarketplaceId] => ATVPDKIKX0DER
                                    [SalesChannel] => Amazon.com
                                    [ShippingAddress] => SimpleXMLElement Object
                                        (
                                            [Phone] => (02) 9560 3639
                                            [PostalCode] => 2204
                                            [Name] => Quoc Minh Bui
                                            [CountryCode] => AU
                                            [StateOrRegion] => New South Wales
                                            [AddressLine1] => 19 Centennial St
                                            [City] => Marrickville
                                        )

                                    [NumberOfItemsShipped] => 1
                                    [AmazonOrderId] => 104-9066827-4446667
                                    [PaymentMethod] => Other
                                )
...
4

2 に答える 2

3

SimpleXML は素晴らしいですね。

foreach ($xml->ListOrdersResult->Orders->Order as $order) {
    $amazonOrderId = (string) $order->AmazonOrderId;
    $orderTotal    = (string) $order->OrderTotal->Amount;
}

そうしないと、これらのスカラー値に対して s が返される(string)ため、型キャストを使用します。SimpleXMLElement

于 2013-03-14T00:34:22.617 に答える
0

各注文の「Amount」属性と「AmazonOrderId」属性を取得します。

一言一句説明すると、これがあなたが探しているものです。

$allThoseAttributes = $xml->xpath('//Order/@Amount|//Order/@AmazonOrderId');

ただし、探している可能性が高いのは次のとおりです。

$orders = [];
foreach ($xml->xpath('//Order') as $order) {
    $orders[] = [
        'amazon' => (string)  $order->AmazonOrderId
        'total'  => (string)  $order->OrderTotal->Amount;
    ];
}

あなたが属性と呼ぶものは事実上の要素だからです。XML と Xpath について詳しく知りたい場合は、こちらをお読みください: XPath

于 2013-03-14T00:57:41.160 に答える