parsing xml

  • Auteur de la discussion Auteur de la discussion dudo
  • Date de début Date de début
WRInaute impliqué
Bonjour

Je travaille sur une api et je n'arrive pas à comprendre pourquoi mon parsing n'est pas complet en effet je récupère
uniquement les titres avec le code ci-dessous, mais pas les autres valeurs .
Pourtant il me semble que la hiérachie est correct.
Le fichier xml test est à cette
adressehttp://sandbox.api.shopping.com/pub...ops&numAttributes=5&numAttributesWithValues=5

Code:
foreach($parser->document->categories[0]->category[0]->attributes[0]->attribute as $attributes) { 
echo "<div id=total_matches_container><div id=total_matches><div id=total_num_of_matches>".$attributes->name[0]->tagData;"</div>"; 

// je passe en minuscule attributeValues[0]-> attributevalues[0]-> qui affiche uniquement la 1ere sous valeur Below $520, Intel Core,

echo "<br><span class='result_list'><a href='".$attributes->attributeValues[0]->attributevalue[0]->tagAttrs['id']."'>".$attributes->attributevalues[0]->attributevalue[0]->name[0]->tagData."</a></span></div></div>"; 
}

Affiche:
Price Range :
Below $520
Processor Type :
Intel Core
Brand :
PIONEERPOS

donc si je prends Price range il manque les valeurs suivantes

$510 - $770
$770 - $1110
$1110 - $1540
Above $1540

Si vous avez une idée merci, c'est peutêtre l'utilisation d'une nouvelle boucle mais je cale !

ludo
 
Nouveau WRInaute
Voila un petit code créé vite fait bien fait pour afficher l'image, description, le prix et le lien:

Code:
<?php

$data= file_get_contents('http://sandbox.api.shopping.com/publisher/3.0/rest/GeneralSearch?apiKey=authorized-key&trackingId=7000610&keyword=Desktops&numAttributes=5&numAttributesWithValues=5');

preg_match_all("/<product[^>]*?>(.*)<\/product>/Uism", $data, $items);

$count=0;

foreach ($items[1] as $item)

{

preg_match("/<name>(.+)<\/name>/Uism", $item, $titre);
preg_match("/<shortDescription>(.+)<\/shortDescription>/Uism", $item, $description);
preg_match("/<minPrice>(.+)<\/minPrice>/Uism", $item, $pricemini);
preg_match("/<image available=\"true\" height=\"100\" width=\"100\">(.+)<\/image>/Uism", $item, $image);
preg_match("/<maxPrice>(.+)<\/maxPrice>/Uism", $item, $pricemax);
preg_match("/<productOffersURL>(.+)<\/productOffersURL>/Uism", $item, $url);

$r_titre[$count] = trim(addslashes(strip_tags(utf8_decode($titre[1]))));
$r_description[$count] = trim(addslashes(strip_tags(utf8_decode($description[1]))));
$r_image[$count] = $image[1];
$r_pricemini[$count] = $pricemini[1];
$r_pricemax[$count] = $pricemax[1];
$r_url[$count] = $url[1];

++$count;

}

for($i=0;$i<$count;$i++)

{

$r_image[$i] = str_replace('<sourceURL>', '<img src="', $r_image[$i]);
$r_image[$i] = str_replace('</sourceURL>', '" height="100" width="100">', $r_image[$i]);

echo '<table width=500><tr><td>',$r_image[$i],'</td>';
echo '<td>',$r_titre[$i],'<br>';
echo $r_description[$i],'<br>';
echo $r_pricemini[$i],' € -',$r_pricemax[$i],' €<br>';
echo '<a href=',$r_url[$i],' target=_bank>Voir offre</a></td></tr></table><br><br>';

}

?>
 
WRInaute impliqué
frogannonce a dit:
Petit question ? ou tu as eu ce tracking :

http://sandbox.api.shopping.com/pub...ops&numAttributes=5&numAttributesWithValues=5

Chez quel plateforme d'affiliation ?

C'est l'api de shopping.com, merci pour ce code, mais mon code parse très bien cette partie
en fait ce sont les attributs du bas que je n'arrive pas a parser et je commence à
comprendre pourquoi en fait il faudrait une nouvelle boucle en 2:

Code:
1) ok
foreach($parser->document->categories[0]->category[0]->attributes[0]->attribute as $attributes) { 
echo "<div id=total_matches_container><div id=total_matches><div id=total_num_of_matches>".$attributes->name[0]->tagData;"</div>"; 

Affiche les titres: Price Range - Processor Type - Brand 

2) non
echo "<br><span class='result_list'><a href='".$attributes->attributeValues[0]->attributevalue[0]->tagAttrs['id']."'>".$attributes->attributevalues[0]->attributevalue[0]->name[0]->tagData."</a></span></div></div>"; 

Affiche seulement le premier attribut de chaque titre ci-dessus alors quil y en a 5
donc pour Price Range 
Below $520 - 

Processor Type 
Intel Core
etc

mais je n'arrive pas à l'écrire correctement

ludo
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut