Reputation: 5
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;
Upvotes: 0
Views: 81
Reputation: 12322
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;
}
}
Upvotes: 1
Reputation: 42676
Try using var_dump()
instead of print_r()
to look at the value of $xml
. It's a bit convoluted, but you'll find the data you're looking for at this location:
$xml->products[0]->product->items[0]->item->prices->normal->priceNormal[0];
Upvotes: 1