Mettre en forme un fichier XML récupéré dynamiquement

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics

FrenchKiss
WRInaute discret
WRInaute discret
 
Messages: 187
Inscription: 6 Oct 2004

Mettre en forme un fichier XML récupéré dynamiquement

Message le Sam Juil 16, 2005 14:35

Hello à tous
Je récupère un fichier XML généré par Amazon, et je souhaiterais savoir COMMENT je peux le mettre en forme.
J'ai commencé à chercher, et ce que j'ai trouvé me laisse à penser qu'il faut déclarer soit des styles CSS, soit un fichier XST, tous deux DANS le fichier XML. Or moi, le récupérant chez Amazon, je ne peux modifier celui-ci.

Qqun peut-il m'éclairer ?


aladdin
WRInaute passionné
WRInaute passionné
 
Messages: 1457
Inscription: 29 Avr 2005

Message le Sam Juil 16, 2005 15:15

bein suffit de créer un php qui lit ce fichier et le regenère avec en y incluant les styles necessaires ...
après il faut voir si t'a le droit de le faire ou pas ;)

FrenchKiss
WRInaute discret
WRInaute discret
 
Messages: 187
Inscription: 6 Oct 2004

Message le Sam Juil 16, 2005 15:26

arf... j'ai aucune idée de comment faire tout ça :/
Ben je suis pas dans la mouise moi :(
merci quand meme :)

playentry
WRInaute discret
WRInaute discret
 
Messages: 227
Inscription: 26 Jan 2005

Message le Sam Juil 16, 2005 16:20

Heu... Un peu hors sujet... Ou est-ce que tu l'as trouvé ce fichier xml généré par amazon ? Ça m'intréresse... Sinon, pour ce qui est de ton prob... J'en ai aucune idée... Il doit certainement exister des tutos sur le web... :roll:

epsilon74
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 444
Inscription: 17 Mar 2004

Message le Sam Juil 16, 2005 16:52

le flux xml est proposé par Amazon dans les webservices.
Par contre :
"Utiliser notre plateforme Webservices nécessite des connaissances dans le domaine du développement de sites internet. Il est par exemple préférable d'avoir des connaissances sur SOAP, HTML, et Perl ou d'autres programmes de langage, comme XML ou XSLT, et d'être capable d'écrire et de travailler avec CGI scripts (ou mod_perl ou équivalent) et Network, qui facilite le transfert de données.
"
Sinon, le plus simple (mais pas le plus "propre") est de récuperer le flux, le parser et l'integrer en base de donnée. Puis tu generes tes pages depuis cette base. Mais avec des gros flux, ça peut devenir tres lourd.
Le mieux (plus propre mais beaucoup plus complexe à mon avis) est XSLT.
Cherches un peu, il y a des tuto sur le net (j'ai plus les adresses en tête) sur comment parser un flux XML.

FrenchKiss
WRInaute discret
WRInaute discret
 
Messages: 187
Inscription: 6 Oct 2004

Message le Sam Juil 16, 2005 16:52

C'est leur programme Amazon Web Services
Ils te permettent de générer un XML rien qu'en entrant un ISBN, par exemple.
Je me disais que je pourrais générer une fiche livre rien qu'avec un ISBN, mais il faudrait pour cela pouvoir transformer le XML en HTML.

Et je sais pas faire :/
J'ai bien trouvé des tutos, mais il faut pour cela déclarer un fichier XST dans le XML, et comme je ne peux pas retoucher celui-ci.. et que je ne sais pas le réécrire, je suis coincé :/

FrenchKiss
WRInaute discret
WRInaute discret
 
Messages: 187
Inscription: 6 Oct 2004

Message le Sam Juil 16, 2005 17:02

espilon :)
J'ai effectivement trouvé de tels tutos, par exemple ici :
http://www.asp-php.net/tutorial/xml/index.php

Mais ces cours supposent que tu es le propriétaire du flux XML, et que donc, tu peux y rajouter une petite ligne... Dans mon cas, je ne peux pas :/

Donc je suppose qu'effectivement, il va me falloir l'aide d'un développeur avec + de bagages que moi, parce que autant je suis capable de bidouiller, là c'est déjà plus complexe. Dommage :)

French Fred
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 265
Inscription: 12 Fév 2004

Message le Sam Juil 16, 2005 17:06

Bonjour,

Pour appliquer une xsl, il y a deux solutions.
Soit en mode client (javascript), soit en mode server (php, asp, ...).

Pour appliquer la transformation en mode server via php, il y a les fonctions xslt de php:
http://www.php.net/xslt
http://www.php.net/manual/fr/ref.xsl.php
http://www.php.net/manual/fr/function.d ... rocess.php

Il te reste a dompter les xslt via http://www.w3schools.com/xsl/default.asp.

Bonne continuation

FRed


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3602
Inscription: 10 Fév 2004

Message le Sam Juil 16, 2005 17:12

C'est surement pas du grand art (le parsage du XML est ici assez... basique) mais ça marche bien.

Utilisé ici :
http://localhost/hellawaits/articles/fo ... 050505.php
ou encore
http://www.voipfr.org/boutique-voip.php (mais sans cache, donc lent).

Si vous modifiez le code, je suis bien sûr intéressé par les patchs / ajouts de fonctionnalités.

J'ai supprimé l'exemple de code. Il est disponible gratuitement sur http://www.netoscope.org/scripts.php , où seront centralisées les contributions et modifications. Le code est diffusé sous licence de logiciel libre (a priori, licence CPL).
Dernière édition par ecocentric le Mer Juil 20, 2005 11:14, édité 1 fois.

FrenchKiss
WRInaute discret
WRInaute discret
 
Messages: 187
Inscription: 6 Oct 2004

Message le Sam Juil 16, 2005 17:19

Merci à vous deux
Ecocentric, ça me parait un peu touffu, est ce que ce serait abuser de ton amabilité que de te demander un rapide commentaire sur les fonctions qui constituent ta class ?

Parce que j'ai regardé, je vois pas comment les mettre en oeuvre (bon en mm temps, j'ai des petits yeux aujourd'hui, trop cherché / lu de trucs sur le XML, j'en peux plus).


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3602
Inscription: 10 Fév 2004

Message le Sam Juil 16, 2005 17:29

FrenchKiss a écrit:Merci à vous deux
Ecocentric, ça me parait un peu touffu, est ce que ce serait abuser de ton amabilité que de te demander un rapide commentaire sur les fonctions qui constituent ta class ?

Parce que j'ai regardé, je vois pas comment les mettre en oeuvre (bon en mm temps, j'ai des petits yeux aujourd'hui, trop cherché / lu de trucs sur le XML, j'en peux plus).


Code: Tout sélectionner
<?php
   include "mon fichier PHP avec l'objet Amazon";

   function display_books ($aws, $affid, $asincode)
   {
      for ($i=0; $i<count($asincode); $i++)
      {
         $asin = $asincode[$i];
         $text = show_book_asin ($aws, $affid, $asin);
         if ($text!="Error")
            echo $text;
      }
   }
?>

<?php
   
   $aws = new AmazonWs;
   $aws->subscriptionID = "TA CLEF AMAZON WS";
   $affid = "TON ID AFFILIE AMAZON";
?>


Voili voilou...

display_books ($aws, $affid, $asincode) prend un objet (celui de mon post précédent, ton numéro d'affilié Amazon et un ASIN.

Il y a moyen d'obtenir une liste de bouquin à partir d'un mot-clef en utilisant "search_by_keyword" plutôt que "show_book_asin".

Je pourrais t'aider lundi si tu as un problème (j'ai d'autres codes sur le côté, il faudrait que je recentralise une fois et que je le diffuse).

FrenchKiss
WRInaute discret
WRInaute discret
 
Messages: 187
Inscription: 6 Oct 2004

Message le Sam Juil 16, 2005 17:44

C'est redoutable, merci beaucoup pour ton intervention, que je qualifierais de divine si j'étais porté sur la chose :)
MERCI !
En revanche, la fonction display_books semble coincer quelque part : dès que je la mets en oeuvre, je me retrouve avec une page blanche, source vide.
Si je la supprime, et appelle directement
Code: Tout sélectionner
echo display_books ($aws, $affid,  $asincode);
, ça marche impeccable.

Au passage, j'ai constaté que niveau présentation, ça se passait DANS la classe. C'est pas joli joli tout ça :)
:arrow: je vais essayer de déméler ça, et si j'arrive à quelque chose de plus propre et plus flexible, je te le ferai savoir dans ce topic, ok ?

Merci encore et bon week end.


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3602
Inscription: 10 Fév 2004

Message le Sam Juil 16, 2005 18:00

FrenchKiss a écrit:Au passage, j'ai constaté que niveau présentation, ça se passait DANS la classe. C'est pas joli joli tout ça :)

En effet. J'espère que mon prof. d'info ne l'a pas vu ;-).
FrenchKiss a écrit: :arrow: je vais essayer de déméler ça, et si j'arrive à quelque chose de plus propre et plus flexible, je te le ferai savoir dans ce topic, ok ?

Bonne idée !
FrenchKiss a écrit:Merci encore et bon week end.

De rien ;-).

FrenchKiss
WRInaute discret
WRInaute discret
 
Messages: 187
Inscription: 6 Oct 2004

Message le Sam Juil 16, 2005 19:07

Hop là, la même fonction, mais au format XHTML, pour permettre n'importe quelle mise en forme avec CSS.

Code: Tout sélectionner
function show_book_asin ($aws, $affid, $asin)
{
   $aws->itemtype = "Books";
   if ($aws->search_by_asin ($asin)==true)
   {
      $temp = "<div id=\"".$asin."\" class=\"livre\">";
      for ($i=0; $i<$aws->recordcount; $i++)
      {
         if ($aws->item[$i]->mediumimage_url)
            $temp .= "<div class=\"couverture\"><a href=\"http://www.amazon.fr/exec/obidos/ASIN/$asin/$affid\" target=\"blank\"><img src='" . $aws->item[$i]->mediumimage_url . "' width='" . $aws->item[$i]->mediumimage_width . "' height='" . $aws->item[$i]->mediumimage_height . "' border='0'></a></div>\n";     
            $temp .= "<div class=\"texte\"><div id=\"titre\">" . $aws->item[$i]->title . "</div><div class=\"auteur\">par " . $aws->item[$i]->author . " chez " . $aws->item[$i]->publisher . "</div>
         <div class=\"prix\">Prix : " . $aws->item[$i]->amount . " " . $aws->item[$i]->currencycode . "&nbsp;&nbsp;(<a href=\"http://www.amazon.fr/exec/obidos/ASIN/$asin/$affid\" target=\"blank\">commander</a>)</div></div>\n";
         
      }
      $temp .= "</div>";
   }
   else
      $temp = $aws->error;
   return $temp;
}
Remarquez que j'ai modifié la fonction pour qu'elle affiche la miniature de taille moyenne.

Je pense encore la modifier de mon coté, pour permettre à mes users de rajouter leurs commentaires sur le livre affiché.

FrenchKiss
WRInaute discret
WRInaute discret
 
Messages: 187
Inscription: 6 Oct 2004

Message le Sam Juil 16, 2005 23:57

Par contre, quand $asincode est un tableau, la fonction me renvoie une erreur, et je n'arrive pas à voir pkoi.

Code: Tout sélectionner
include "includes/libaws.php";
   
   function display_books ($aws, $affid, $asincode)
   {
      for ($i=0; $i<count($asincode); $i++)
      {
         $asin = $asincode[$i];
         $text = show_book_asin ($aws, $affid, $asin);
         if ($text!="Error") { echo $text; }
      }
   }


Code: Tout sélectionner
$aws = new AmazonWs;
   $aws->subscriptionID = "XXXXXXXXXXXX";
   $affid = "xxxxxxxxxxx";
   
   $asincode = array("2876918749","2710116332","2710112825","2100052896");
  echo show_book_asin ($aws, $affid, $asincode);

Mettre en forme un fichier XML récupéré dynamiquement

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités