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条)

报告相同问题?

悬赏问题

  • ¥35 引用csv数据文件(4列1800行),通过高斯-赛德尔法拟合曲线,在选取(每五十点取1点)数据,求该数据点的曲率中心。
  • ¥20 程序只发送0X01,串口助手显示不正确,配置看了没有问题115200-8-1-no,如何解决?
  • ¥15 Google speech command 数据集获取
  • ¥15 vue3+element-plus页面崩溃
  • ¥15 像这种代码要怎么跑起来?
  • ¥15 安卓C读取/dev/fastpipe屏幕像素数据
  • ¥15 pyqt5tools安装失败
  • ¥15 mmdetection
  • ¥15 nginx代理报502的错误
  • ¥100 当AWR1843发送完设置的固定帧后,如何使其再发送第一次的帧