我一直在試圖解析這個數據一段時間,但我真的不明白simpleXML以及它如何存儲/檢索。我有以下的XML:解析兒童Simplexml兒童
<ListOrderItemsResult>
<OrderItems>
<OrderItem>
<QuantityOrdered>1</QuantityOrdered>
<Title>Organic Chamomile & Lavender Shea Butter CP Soap Making Kit 2 Lbs.</Title>
<ItemPrice>
<CurrencyCode>USD</CurrencyCode>
<Amount>29.99</Amount>
</ItemPrice>
<ItemTax>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</ItemTax>
</OrderItem>
<OrderItem>
<QuantityOrdered>1</QuantityOrdered>
<Title>Eucalyptus & Mint Organic Shea Butter CP Soap Making Kit 3 lbs.</Title>
<ItemPrice>
<CurrencyCode>USD</CurrencyCode>
<Amount>32.99</Amount>
</ItemPrice>
<ItemTax>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</ItemTax>
</ShippingDiscount>
</OrderItem>
</OrderItems>
<AmazonOrderId>12134</AmazonOrderId>
</ListOrderItemsResult>
我想將它轉換成每個OrderItem是一行的csv。這些列是:QuantityOrdered,Title,ItemPrice,ItemTax。到目前爲止,我設法抓住了除ItemPrice和ItemTax之外的所有東西,因爲他們有子節點,我不知道如何訪問它們。
這裏是我的代碼:
$OrderItem = $xmlDocs->xpath('//a:OrderItem');
的foreach($ OrderItem的爲$ n){
foreach ($AmazonOrderId as $t) {
$row[]=$t;
}
// Iterate through each child of <OrderItem> node
$child = $xml->xpath('//a:OrderItem['.$i.']/*');
foreach ($child as $value) {
$row[] = $value;
}
print_r($row);
$fs = fopen('141.csv', 'a');
fputcsv($fs, $row);
$row = [];
// Clean out array for next <item> (i.e., row)
$i++; // Move to next <item> (i.e., node position)
}
FCLOSE($ FS);
我有它的工作,但它是因爲我無法弄清楚如何到達孩子的孩子,什麼都沒有顯示ItemPrice和ItemTax。
TL; DR - 我試圖循環訪問每個OrderItem節點並獲取每個子節點的值,如果子節點有子節點,我只想獲取名爲'Amount'的節點的值。