Integrer un flux xml brut ?

  • Auteur de la discussion Auteur de la discussion comparef
  • Date de début Date de début
WRInaute occasionnel
Bonjour,

Je me suis inscrit sur la plateforme ClickInText, et j'essai d'intégrer leurs liens sponsorisé XML.

L'adresse qu'ils me donne est http://fr.xml.clickintext.net/?v=0.9&a= ... &q=annonce .

J'ai essayé d'insérer a mes page ces résultats XML via plusieurs outils (magpierss et sur le site http://www.actifpub.com) mais rien a faire ce n'est pas interprété et rien ne s'affiche.
En contactant le support technique de clickintext ils m'ont dit qu'il ne s'agissait pas d'un flux au format rss, qu'il s'agissait d'un flux xml brut
selon aucun autre standard que le xml... mais je suis débutant dans tout ce qui concerne le XML et le RSS donc ca ne m'aide pas beaucoup....

Est ce que quelqu'un pourrait m'éclairer sur la façon d'insérer le contenu XML de cette page dans les pages de mon site ?

Merci d'avance pour votre aide,
Robin
 
WRInaute impliqué
xml etant un langage, il faut signaler au browser qu'il s'agit d'une page xml. Tu peux soit inclure une iframe dont la page de base est ce fichier xml, ou bien utiliser des fonctions (php par exemple) qui génere du code html a partir de code xml.
 
WRInaute passionné
comparef a dit:
Ok, merci pour ta reponse, je vais donc chercher cette fonction PHP.

A+
RObin

Tu as plusieurs possibilités :
- faire une feulle de style XSLT
- en php5 : utiliser simpleXML
- en php4/php5 : tu dois avoir des librairies Sax et DOM ou XSLT
La doc php : DOM

ma préférence va clairement pour le couple XML/XSLT. Je ne suis pas sûrs que ce soit le meilleur choix en PHP.
A voir avec les pro du php ce qu'ils choisiraient comme solution
 
WRInaute occasionnel
Merci pour vos reponses, j'ai trouvé un script qui me permet d'afficher le flux
(Je le met ici, ca pourrait servir a quelqu'un)
Code:
# Configuration 

$fichier_xml = "http://..."; // Placez ici l'adresse du flux 
$nombre_limite = 5; // Nombre maximum d'éléments à afficher 


# Affichage du Flux
$file = fopen($fichier_xml,"r"); 
if ($file) { 
while (!feof($file)) $raw .= fread($file,32000); 
fclose( $file ); 

if(eregi("<result>(.*)</result>",$raw,$rawitems)){ 
$items = explode("<result>", $rawitems[0]); 
$nb = count($items); 
$maximum = (($nb-1) < $nombre_limite) ? ($nb-1) : $nombre_limite; 

for ($i=0;$i<$maximum;$i++) { 
eregi("<title>(.*)</title>",$items[$i+1], $title); 
eregi("<url>(.*)</url>",$items[$i+1], $link); 

echo $title[1].$link[1];
 
Nouveau WRInaute
Bonjour, est ce que quelqu'un pourrait m'expliquer brievement comment utiliser le script que comparef
met à notre disposition ? Merci
 
WRInaute occasionnel
Il n'y a que deux parametres a definir : l'adresse du flux (fournit par Clickintext), et le nombre d'annonces a afficher.

Ensuite il suffit de coller ce script dans ta page, et d'extraire les champs necessaire avec des lignes de la forme
Code:
eregi("<url>(.*)</url>",$items[$i+1], $link);

puis tu met en forme les elements extraits dont les variables sont par exemple $link[1] pour la ligne que j'ai mis juste au dessus.
 
WRInaute impliqué
il suffit d'utiliser MagPieRSS, avec une fonction tel que celle indiqué sur l'article de WRI par rapport a MagPieRSS en adaptant la fonction en fonction du nom des balises de formatage du fichier XML...

C'est supra simple!
 
Nouveau WRInaute
Buse...

Hello, je suis une buse en matière de développement et autre PHP, XML, XSLT, etc.

j'ai moi aussi un flux xml à intégrer dans un site. Ce flux est du xml brut semble-t-il (j'ai essayé avec toutes sortes de systèmes d'intégration RSS comme MagpiRSS, feedlist ou autre mais ça ne fonctionne pas). Je voudrais donc tester le bout de code plus haut. Par contre je n'ai aucune idée des balises qu'il faut que je mette avant et après pour que ça fonctionne.

QQ'un aurait-il l'obligeance d'aider une buse ? ;-)
merci !

Pour plus de précision, je vous donne la structure du flux xml en question :


<ftvvideolist xsi:schemaLocation="l'adresse du flux">

<videolisting date="sa date">

<programme>
<title>son titre</title>
<date>sa date</date>

<description>
sa description
</description>
<imageurl>l'url de l'image</imageurl>
<videourl>un javascript</videourl>
</programme>


Encore merci de votre aide...
 
WRInaute occasionnel
Bonjour,

En fait c'est tres simple, apres avoir collé le bout de code donné tout en haut,

Si tu veux extraire par exemple le titre et la date, tu met cela :
Code:
eregi("<titre>(.*)</titre>",$items[$i+1], $titre);
eregi("<date>(.*)</date>",$items[$i+1], $date);
Et ensuite pour afficher tu fait un simple echo de la maniere suivante :
Code:
echo 'le titre : '.$titre[1].' et la date : '.$date[1];

Bon courage,

Robin
 
Nouveau WRInaute
Code suite

Ok, merci beaucoup pour cette précision

Et pour le bout de code plus haut je le place entre des balises <? php et ?> ou d'autres balises dans mon fichier php ?
 
WRInaute passionné
Le couple XML/XSLT c'est clairement le mieux, car fait pour ça. Mais pas compatible avec tout les navigateurs (les récents oui, mais pas les anciens).

Les fonctions XML de PHP seront plus utile (et ça évite d'écrire le code de lecture du fichie ligne par ligne comme quoté plus avant).
 
WRInaute passionné
Bacteries a dit:
Le couple XML/XSLT c'est clairement le mieux, car fait pour ça. Mais pas compatible avec tout les navigateurs (les récents oui, mais pas les anciens).

Faire les transformations côté serveur, et non pas côté client. Cela enlève tout pb de compatibilité avec les navigateurs.

Sinon, je suis d'accrod avec toi Bactéries. La bibiothèque PHP est suffisamment riche, même en php4. J'ai du mal à comprendre pourquoi aucun développeur PHP n'a posté une solution en utilisant les librairies Php.

Se servir de DOM ou de SAX, ce n'est peut-être pas évident au début. Mais si demain vous changez de langage, vous retrouverez les mêmes mode de fonctionnement ( évenementiel ou par modèle objet ).

Ensuite, le plus portable ce sont évidemment les transformations XML/XSLT, avec un petit bémol au niveau des performances.
 
N
nono_fr
Guest
Flux XML ClickInText

comparef a dit:
Merci pour vos reponses, j'ai trouvé un script qui me permet d'afficher le flux
(Je le met ici, ca pourrait servir a quelqu'un)
Code:
# Configuration 

$fichier_xml = "http://..."; // Placez ici l'adresse du flux 
$nombre_limite = 5; // Nombre maximum d'éléments à afficher 


# Affichage du Flux
$file = fopen($fichier_xml,"r"); 
if ($file) { 
while (!feof($file)) $raw .= fread($file,32000); 
fclose( $file ); 

if(eregi("<result>(.*)</result>",$raw,$rawitems)){ 
$items = explode("<result>", $rawitems[0]); 
$nb = count($items); 
$maximum = (($nb-1) < $nombre_limite) ? ($nb-1) : $nombre_limite; 

for ($i=0;$i<$maximum;$i++) { 
eregi("<title>(.*)</title>",$items[$i+1], $title); 
eregi("<url>(.*)</url>",$items[$i+1], $link); 

echo $title[1].$link[1];

hello tout le monde et comparef

j'utilise exactement le code donné par Comparef mais rien ne s'affiche ???
... avec cette ULR : http://fr.xml.clickintext.net/?v=1.0&a= ... 8&q=voyage

Quelqu'un aurait-il une idée (pb de serveur PHP4 ou PHP5??).

Par ailleurs, Comparef, comment fais tu pour récupérer l'adresse IP du visiteur (yep, dans l'url présentée au dessus une adresse IP est écrite en dure, mais comment la récupérer dynamiquement ??)

Merci à tous pour vos réponse et votre aide.

nono
 
WRInaute occasionnel
Salut,

Adresse ip du visiteur, fonction php : $_SERVER['REMOTE_ADDR']


Pour ton probleme avec la mise en forme du flux, dans le code il y a des acolades qui ne sont pas refermée, cela vient peut etre de la ?
Essaye de rajouter
Code:
}}}
a la fin.

Bonne continuation,
Robin
 
Nouveau WRInaute
bonsoir, j avoue je seche la :cry:

je suis un comme nono fr je bloque

rien ne s affiche je n ai pas de resultat voyez vous le probleme?

Code:
<?php		# Configuration 

$fichier_xml = "http://fr.xml.clickintext.net/?v=1.0&a=1591&is=2491&ip=IP_DU_VISITEUR&q=annonce
"; // Placez ici l'adresse du flux 
$nombre_limite = 5; // Nombre maximum d'éléments à afficher 


# Affichage du Flux 
$file = fopen($fichier_xml,"r"); 
if ($file) { 
while (!feof($file)) $raw .= fread($file,32000); 
fclose( $file ); 

if(eregi("<result>(.*)</result>",$raw,$rawitems)){ 
$items = explode("<result>", $rawitems[0]); 
$nb = count($items); 
$maximum = (($nb-1) < $nombre_limite) ? ($nb-1) : $nombre_limite; 

for ($i=0;$i<$maximum;$i++) { 
eregi("<title>(.*)</title>",$items[$i+1], $title); 
eregi("<url>(.*)</url>",$items[$i+1], $link); 

echo $title[1].$link[1];}}}

?>

pour recuperer l ip du visiteur, j ai peur de n avoir pas bien compris non plus un peu d aide svp

Code:
$_SERVER['REMOTE_ADDR']
 
WRInaute occasionnel
fredo59 a dit:
bonsoir, j avoue je seche la :cry:

je suis un comme nono fr je bloque

rien ne s affiche je n ai pas de resultat voyez vous le probleme?

Code:
<?php		# Configuration 

$fichier_xml = "http://fr.xml.clickintext.net/?v=1.0&a=1591&is=2491&ip=IP_DU_VISITEUR&q=annonce
"; // Placez ici l'adresse du flux 
$nombre_limite = 5; // Nombre maximum d'éléments à afficher 


# Affichage du Flux 
$file = fopen($fichier_xml,"r"); 
if ($file) { 
while (!feof($file)) $raw .= fread($file,32000); 
fclose( $file ); 

if(eregi("<result>(.*)</result>",$raw,$rawitems)){ 
$items = explode("<result>", $rawitems[0]); 
$nb = count($items); 
$maximum = (($nb-1) < $nombre_limite) ? ($nb-1) : $nombre_limite; 

for ($i=0;$i<$maximum;$i++) { 
eregi("<title>(.*)</title>",$items[$i+1], $title); 
eregi("<url>(.*)</url>",$items[$i+1], $link); 

echo $title[1].$link[1];}}}

?>

pour recuperer l ip du visiteur, j ai peur de n avoir pas bien compris non plus un peu d aide svp

Code:
$_SERVER['REMOTE_ADDR']
bonjour
intéressant le code .Est t'il possible de filtrer.Choisir d'afficher certains produits ou catégories par exemple
merci!!
 
WRInaute occasionnel
Bonsoir, je up ce post car je n'arrive à faire tourner le script, je l'ai exécuté tel quel et mon navigateur me fait une boucle sans fin de en attente de localhost.
Code:
<?php

# Configuration

$fichier_xml = "http://worldofwarcraft.judgehype.com/nouvelles.xml"; // Placez ici l'adresse du flux
$nombre_limite = 5; // Nombre maximum d'éléments à afficher
# Affichage du Flux
$file = fopen($fichier_xml, "r");
if ($file) {
    while (!feof($file)){
        $raw .= fread($file, 32000);
    fclose($file);
}}
    if (eregi("<result>(.*)</result>", $raw, $rawitems)) {
        $items = explode("<result>", $rawitems[0]);
        $nb = count($items);
        $maximum = (($nb - 1) < $nombre_limite) ? ($nb - 1) : $nombre_limite;

        for ($i = 0; $i < $maximum; $i++) {
            eregi("<title>(.*)</title>", $items[$i + 1], $title);
            eregi("<url>(.*)</url>", $items[$i + 1], $link);
        }
    }

            echo $title[1] . $link[1];
?>

Merci par avance :!: :wink:
 
Discussions similaires
Haut