Aller au contenu

Exploitation du flux xml Alapage (Webservice)


Sujets conseillés

Posté

Bonjour,

Tout d'abord, j'espère ne pas me tromper de catégorie, ce sujet aurait aussi bien pu se trouver dans la catégorie Affiliation & publicité.

Inscrit au système d'affiliation du site commerçant Alapage, j'ai l'intention d'utiliser les flux xml qu'il propose pour les intégrer sur un site web.

Ca fait deux jours que je suis dessus et impossible de l'exploiter correctement. J'ai bien vu qu'il existe plusieurs scripts "prémachés" permettant cette intégration de flux xml mais impossible d'obtenir quelque chose d'intéressant quand j'arrive seulement à obtenir quelque chose.

Je travaille sous php4 ce qui, semble-t-il, n'est pas un avantage... D'autant plus que je découvre plus ou moins xml.

Voici un lien vers un flux xml Alapage correspondant à 1 produit:

http://www.alapage.com/webservices/cardPro...333158&ts=0

Dans ce flot d'informations je ne souhaite finalement en conserver qu'une infime partie: ProductName, ImageUrlMedium et OurPrice...

Bref, je galère vraiment... et si une ou plusieurs bonnes âmes ont dans l'idée de me venir en aide, je leur en serai éternellement reconnaissant ;)

Merci d'avance.

Posté

Merci pour ta réponse.

En fait, tous les flux générés par Alapage (lorsqu'on définit soi-même un ou plusieurs produits) se terminent par quelque chose du style:

<Errors>
<Information num="1145/2007 Feb 04 - 22:05:06::0.88117700">mediaCode is empty.</Information>
</Errors>

Celà signifie-t-il qu'ils sont inutilisables tant qu'il y aura cette erreur?

Posté

Ils sont tout a fait utilisable

Cela dit, personnellement, il suffit pas de dire "j'ai un problème" pour que les autres puisse le résoudre, encore faut-il l'exposer précisément ;)

je n'ai pas compris ou est ton problème... excepté que tu en as un !

Je travaille avec les flux alapage... mais en Php5. Est-tu sur que tu ne puisses pas utiliser php5 qui facilite vraiment la tâche pour traiter les flux XML?

Posté

Effectivement, en me relisant, j'avoue n'avoir pas très bien exposé mon problème. Désolé.

Mon problème est qu'aucun parser en php4 que j'ai trouvé ne semble fonctionner avec les flux générés par Alapage. Je dis bien "semble" car il n'est pas impossible que je m'y sois mal pris.

Soit rien ne s'affiche, soit il y a plein d'erreurs.

En outre, je n'ai pas les compétences nécessaires, en tout cas pas encore, pour faire ce parser moi-même. Et si j'ai créé ce sujet, c'est pour savoir si quelqu'un est en mesure de me venir en aide ou m'aiguiller.

Je ne peux pas pas encore utilisé le php5 puisque mon hébergement mutualisé n'en est qu'à la 4.

Posté

En fouillant dans mes dossiers, j'ai trouvé un début de parser alapage fait en PHP4

Mais vu que je trouvais très compliqué, j'ai préféré m'entrenir avec mon Hebergeur pour passer en php5

Ce code t'afficheras une arborescence de du flux XML.


<?php

// lire un flux xml
// [url="http://www.alapage.com/webservices/topXml.php?partnerId=CMLAP&categoryCode=1&nbrep=5&ts=0"]http://www.alapage.com/webservices/topXml....brep=5&ts=0[/url]

//http://www.alapage.com/webservices/quickSearchXml.php?partnerId=CMLAP&categoryCode=1&availability=0&authors=&productName=&editors=&numberInSeries=&subjects=ENCYCLOPEDIE&isbn=&releaseDate=&keyword=expressions&minPrice=&maxPrice=&minMonth=&maxMonth=&minYear=2005&maxYear=2005&sort=defaut&ts=0

$file = "http://www.alapage.com/webservices/topXml.php?partnerId=CMLAP&categoryCode=1&nbrep=5&ts=0";
$depth = array();

function startElement($parser, $name, $attrs)
{
global $depth;
for ($i = 0; $i < $depth[$parser]; $i++) {
echo ". ";
}
if($attrs['ID'])
echo "$name (".$attrs['ID'].")<br>";
else
echo "$name<br>";
$depth[$parser]++;
}
function characterData($parser, $data)
{
if(trim($data) == '') return false;
global $depth;
for ($i = 0; $i < $depth[$parser]; $i++) {
echo ". ";
}
echo "'$data'<br>";
}

function endElement($parser, $name)
{
global $depth;
$depth[$parser]--;
}

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
?>

Posté

Merci Vincent. Malheureusement, avec ce code j'ai une succession d'erreurs d'offset et d'index non-définis. Il est un peu tard pour que je l'étudie en détail afin de voir ce qui ne va pas. Je le ferai dès que possible.

En revanche, avec un script trouvé sur cette page: XML parser functions (exemple 3), j'ai enfin réussi à obtenir quelque chose d'intéressant, à savoir l'arborescence du flux.

Ne reste plus qu'à exploiter ce résultat...

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...