douhao2856 2017-02-12 14: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 15: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条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部