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

WRInaute discret
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 ?
 
WRInaute passionné
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 ;)
 
WRInaute discret
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:
 
WRInaute occasionnel
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.
 
WRInaute discret
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é :/
 
WRInaute discret
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 :)
 
WRInaute accro
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).
 
WRInaute discret
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).
 
WRInaute accro
FrenchKiss a dit:
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:
<?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).
 
WRInaute discret
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:
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.
 
WRInaute accro
FrenchKiss a dit:
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 dit:
: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 dit:
Merci encore et bon week end.
De rien ;-).
 
WRInaute discret
Hop là, la même fonction, mais au format XHTML, pour permettre n'importe quelle mise en forme avec CSS.

Code:
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é.
 
WRInaute discret
Par contre, quand $asincode est un tableau, la fonction me renvoie une erreur, et je n'arrive pas à voir pkoi.

Code:
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:
$aws = new AmazonWs;
   $aws->subscriptionID = "XXXXXXXXXXXX";
   $affid = "xxxxxxxxxxx";
   
   $asincode = array("2876918749","2710116332","2710112825","2100052896");
  echo show_book_asin ($aws, $affid, $asincode);
 
WRInaute accro
Tu as écrit :

Code:
include "includes/libaws.php";

Normalement, c'est :

Code:
include "include/libaws.php";

Ca ne vient pas de là.

Sinon, je compte publier le code sur un site d'ici fin de la semaine, je ferai un debug d'ici là. Sinon, la variable $text contient normalement un message d'erreur. SI tu peux me l'indiquer ?
 
WRInaute discret
Hello
Le rep includes, c'est celui où je stocke mes fichiers sensibles :)
LE message d'erreur que je récupére, c'est "error".
Simple, net, efficace :)

ok pour la release, tu nous tient au courant dans ce topic ?
 
WRInaute accro
FrenchKiss a dit:
ok pour la release, tu nous tient au courant dans ce topic ?

Oui, et ça devrait être fait pour fin de la semaine ou début de la suivante. J'y intégrerai la dernière recherche par mots-clefs et la mise en cache des pochettes de cédés de musique.
 
WRInaute discret
ça marche
pour le bug, cherche du coté des tableaux, ça foire dès que $asincode devient un array.
Si c'est une chaine simple, ça fonctionne impec.

Pour la mise en cache, puis-je te suggérer les couvertures de livres aussi, si ce n'est pas déjà fait ? :)
 
WRInaute accro
J'ai crée une page sur Netoscope pour centraliser le développement du script : http://www.netoscope.org/scripts.php . Rien de neuf pour le moment. J'ai juste mis le script ainsi qu'une liste de contributions / modifications à intégrer. Le code sera probablement sous licence CPL (licence libre avec gauche d'auteur faible).
 
WRInaute discret
Hello
J'ai jeté un oeil à la fonction
Les styles CSS sont déclarés non pas dans la librairie, mais sur la page qui fait appel à cette fonction. Je pense donc que le feedback est pas vraiment utile.

Sinon, je vais suivre ça de près. Merci :)
ps : tjs aucune idée de pkoi les tableaux font planter la fonction ?
 
WRInaute accro
FrenchKiss a dit:
Sinon, je vais suivre ça de près. Merci :)
ps : tjs aucune idée de pkoi les tableaux font planter la fonction ?

Honnêtement, je n'ai pas regardé. C'est d'ailleurs bizarre parce que sur un de mes sites, j'utilise les tableaux.

En fait, je dois refaire un gros débug général, parce que je dois intégrer deux ou trois versions légèrement différentes du script (c'est pour cela que ça traîne un peu), dont le coeur est le même mais qui diffèrent pour les fonctions d'affichage. Je regarderai cette histoire de tableau à ce moment-là, histoire de diffuser une version complète et fiable.

Je vais également créer un script PHP de test, histoire de faciliter la maintenance, le debug et la gestion des patchs dans le futur.
 
WRInaute discret
Salut,

J'ai été trés interéssé par votre script dés le début... Je voulais savoir ou en était le développement...

J'ai regardé sur la page qui fait le suivit du développement de votre script mais je vous avouerais que je ne suis pas arrivé a faire le fonctionner...

Il m'affiche une page blanche... Est-ce que c'est parce-que ce n'est pas terminé ? Ou un problème de configuration ? Pourriez-vous expliquer comment le configurer ?

Merci beaucoup d'avance et bonne journée !!
 
WRInaute discret
Bonjour
Du nouveau dans le développement des librairies Amazon et Kelkoo ?
J'ai consulté Netoscope, mais n'y ai rien vu de neuf...
Peut être es tu en vacances... si c'est le cas, enjoy :)
 
Discussions similaires
Haut