douhao2856 2017-02-12 22:14
浏览 87
已采纳

尝试从XML属性获取特定值

Trying to scrape an IKEA page at the following link:

http://www.ikea.com/it/it/catalog/products/60255550/?type=xml&dataset=prices

I want to scrape the price of the item, but in the xml file the price appears once unformatted and once with the Euro sign next to it. I wish to scrape the priceNormal unformatted value specifically.

<prices>
<normal>
<priceNormal unformatted="44.99">€ 44,99</priceNormal>
<pricePrevious/>
<priceNormalPerUnit/>
<pricePreviousPerUnit/>
</normal>

My code below doesn't echo the price at all, not sure where I'm going wrong :(

$string = 'http://www.ikea.com/it/it/catalog/products/60255550/?type=xml&dataset=prices';

$xml=simplexml_load_file($string) or die("Error: Cannot create object");
//print_r($xml);

echo $xml->product->prices;
  • 写回答

2条回答 默认 最新

  • dongyan9950 2017-02-12 23:17
    关注

    You should be able to get the price with

    $xml->products->product->items->item->prices->normal->priceNormal
    $xml->products->product->items->item->prices->normal->priceNormal->attributes()->unformatted
    

    If you however need to iterate of a result set, you can break up the places where you are expecting multiples with iteration...

    foreach( $xml->products->product as $product )
    {
      echo $product->name;
      foreach( $product->items->item as $item )
      {
        echo $item->name;
        echo $item->prices->normal->priceNormal;
        echo $item->prices->normal->priceNormal->attributes()->unformatted;
      }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?