2017-02-12 1 views
0

Essayer de gratter une page IKEA sur le lien suivant:Essayer d'obtenir une valeur spécifique attribut XML

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

Je veux gratter le prix de l'article, mais dans le fichier xml le prix apparaît une fois non formaté et une fois avec le signe de l'euro à côté. Je souhaite gratter la valeur non formatée priceNormal spécifiquement.

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

Mon code ci-dessous ne fait pas écho le prix du tout, pas sûr où je vais mal :(

$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; 

Répondre

1

vous devriez être en mesure d'obtenir le prix avec

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

Si vous avez besoin cependant itérer d'un jeu de résultats, vous pouvez briser les endroits où vous attendez multiples avec itération ...

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

Essayez d'utiliser var_dump() au lieu de print_r() regarder la valeur de $xml. il est un peu alambiquée, mais vous trouverez les données que vous cherchez à cet endroit:

$xml->products[0]->product->items[0]->item->prices->normal->priceNormal[0]; 
+0

La valeur retournée a toujours le symbole de l'euro fixé à J'essayais d'éviter ça, des suggestions? – Massive

+1

utilise 'priceNormal [0] -> attributes() -> unformatted' à la fin de la réponse @ miken32. – Scuzzy