1

誰かが次のxmlの2番目の子を取得するのを手伝ってくれますか:

<?xml version="1.0" encoding="UTF-8"?>
<GetItemResponse xmlns="urn:ebay:apis:eBLBaseComponents">
  <Timestamp>2013-03-27T03:39:01.575Z</Timestamp>
  <Ack>Success</Ack>
  <Version>815</Version>
  <Build>E815_CORE_API_15855340_R1</Build>
    <item>
    <ApplicationData>881030.B.0000</ApplicationData>
    <AutoPay>false</AutoPay>
    <BuyerProtection>ItemEligible</BuyerProtection>
    <BuyItNowPrice currencyID="USD">0.0</BuyItNowPrice>
    <Country>US</Country>
    <Currency>USD</Currency>
    <GiftIcon>0</GiftIcon>
    <HitCounter>RetroStyle</HitCounter>
    <ItemID></ItemID>
    <ListingDetails>
      <Adult>false</Adult>
      <BindingAuction>false</BindingAuction>
      <CheckoutEnabled>true</CheckoutEnabled>
      <ConvertedBuyItNowPrice currencyID="USD">0.0</ConvertedBuyItNowPrice>
     <ShippingServiceOptions>
            <ShippingService>UPSGround</ShippingService>
            <ShippingServiceCost currencyID="USD">9.99</ShippingServiceCost>
     </ShippingServiceOptions>
     <InternationalShippingServiceOption>
            <ShippingService>StandardInternational</ShippingService>
            <ShippingServiceCost currencyID="USD">39.99</ShippingServiceCost>
     </InternationalShippingServiceOption>
    <item>

すべてのアイテムを循環するために for ルックを使用しています ($item を $item として)。ShippingServiceOptions と InternationalShippingServiceOption から ShippingServiceCost を取得する必要があります。

次のことをしたいのですが、うまくいきません。

//for ShippingServiceOptions
$item->getElementsByTagName('ShippingServiceCost')->item(0)->nodeValue;

//for InternationalServiceOptions
$item->getElementsByTagName('ShippingServiceCost')->item(1)->nodeValue;
4

1 に答える 1

0

編集

完全な XML を投稿したので、php xml トラバースは次のようになります。

$xml = simplexml_load_string($response);
foreach($xml->item->ListingDetails as $child) {
    foreach($child->children() as $option) {
        if(isset($option->ShippingServiceCost)){
            echo $option->getName() . ": " . $option->ShippingServiceCost . "<br>";
        }
    }
}

投稿した XML にエラーがあります。今後、投稿する前に検証してください。エラーを修正する必要はありません :)


PHP 5 + を使用している場合は、simplexml を使用して xml を解析できます。また、「item」xml タグを閉じる必要があります。

次に、コードは次のようになります。

<?php
    $xml = simplexml_load_file("test.xml");
    foreach($xml->children() as $child) {
        echo $child->getName() . ": " . $child->ShippingServiceCost . "<br>";
    }
?>

xml:

<item>
 <ShippingServiceOptions>
        <ShippingService>UPSGround</ShippingService>
        <ShippingServiceCost currencyID="USD">9.99</ShippingServiceCost>
 </ShippingServiceOptions>
 <InternationalShippingServiceOption>
        <ShippingService>StandardInternational</ShippingService>
        <ShippingServiceCost currencyID="USD">39.99</ShippingServiceCost>
 </InternationalShippingServiceOption>
</item>

出力:

ShippingServiceOptions: 9.99
InternationalShippingServiceOption: 39.99
于 2013-03-27T04:59:35.150 に答える