Intégrer un fil de news RSS dans un site perso (XML)

netgui

Membre actif
9 Octobre 2002
982
88
45
Orléans
www.mission-internet.fr
Je cherche à intégrer un ou plusieurs fil de news RSS dans un site perso sans pour autant bachoter un bouquin de XML de 150 pages.

Pourriez-vous m'aider sur ce point?

Merci.
zen.gif
 
L'idéal serait d'utiliser une feuille de style XSL et de transformer le XML en ce que tu veux grâce à cette feuille de style et à un processeur XSLT. Malheureusement, c'est loin d'être encore très bien implanté, et pour l'heure PHP n'inclut pas par défaut de processeur XSLT. Néanmoins si tu as les moyens d'avoir la config PHP que tu veux ça peut être intéressant.

Pour plus d'infos, regarde le sujet que j'ai créé il y a quelques semaines.

Sinon, avec un parser XML, tu dois pouvoir t'en sortir, mais c'est moins simple.
 
Petit exemple tire du magazine LOGIN Hors Serie, PHP4 + XML :

news.xml :

<?xml version="1.0" standalone="yes" ?>
<newsator>
<news date="05/11/2001">
<titre>Titre 1</titre>
<corps>Corps 1</corps>
<auteur>Auteur 1</auteur>
</news>
<news date="03/10/2001">
<titre>Titre 2</titre>
<corps>corps 2</corps>
<auteur>Auteur 1</auteur>
</news>
<news date="29/10/2001">
<titre>Titre 3</titre>
<corps>Corps 3</corps>
<auteur>nop</auteur>
</news>
</newsator>
 
newsparseur.php :
<?php
$analyseur = "";
$fichierXml = "news.xml";
$balisesOuvrantes = array(
"NEWSATOR" => "<html><head><title>NEWSATOR</title></head><body><div align=center><b><font face=\"Verdana\" size=6>.:: flash sp&eacute;cial ::. </font></b><br><br><br>",
"NEWS" => "<table width=75% border=1 cellspacing=1>",
"TITRE" => "<tr><td><font face=\"Verdana\" size=4><b>",
"CORPS" => "<tr><td><font face=\"Verdana\" size=2>
<p align=\"justify\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;",
"AUTEUR" => "<tr><td><div align=right><font size=2 face=\"Verdana\"><i>par ");
$balisesFermantes = array(
"NEWSATOR" => "</div></body></html>",
"NEWS" => "</table><br><br>",
"TITRE" => "</b></font></td></tr>",
"CORPS" => "</p></font></td></tr>",
"AUTEUR" => "</font></i></font></div></td></tr>"
);
//Méthodes
function debutBalise($parser, $nom, $attributs) {
global $balisesOuvrantes;
print($balisesOuvrantes[$nom]);
}
function finBalise($parser, $nom) {
global $balisesFermantes;
print($balisesFermantes[$nom]);
}
function texte($parser, $data) {
print("$data");
}
function gestionnaireDePI($parser, $cible, $data) {
switch (strtolower($cible)){
case "php":
eval($data);
break;
}
}
$analyseur = xml_parser_create();
xml_parser_set_option($analyseur, XML_OPTION_CASE_FOLDING, true);
// ah-HA!
//xml_set_object($analyseur, &$this);
xml_set_element_handler($analyseur, "debutBalise", "finBalise");
xml_set_character_data_handler($analyseur, "texte");
xml_set_processing_instruction_handler($analyseur, "gestionnaireDePI");

if (!($fp = @fopen($fichierXml, "r"))) {
die("impossible d'ouvrir le fichier XML $fichierXML");
}
while ($data = fread($fp, 4096)) {
if ( !xml_parse( $analyseur, $data, feof($fp) ) ) {
die( sprintf( "erreur XML %s à la ligne: %d\n\n",
xml_error_string(xml_get_error_code( $analyseur ) ),
xml_get_current_line_number( $analyseur) ) );
}
}
fclose($fp);
xml_parser_free($analyseur);
?>
voila de quoi te faire un parseur php qui utilise les fonctions de la librairie Expat installe par defaut sur Apache v > 1.36
 
ak7a a dit:
Petit exemple tire du magazine LOGIN Hors Serie, PHP4 + XML :

news.xml :

<?xml version="1.0" standalone="yes" ?>
<newsator>
<news date="05/11/2001">
<titre>Titre 1</titre>
<corps>Corps 1</corps>
<auteur>Auteur 1</auteur>
</news>
<news date="03/10/2001">
<titre>Titre 2</titre>
<corps>corps 2</corps>
<auteur>Auteur 1</auteur>
</news>
<news date="29/10/2001">
<titre>Titre 3</titre>
<corps>Corps 3</corps>
<auteur>nop</auteur>
</news>
</newsator>
Ca, c'est le fichier que l'on veut intégrer, non ?


[Edit]
Après test, c'est effectivement le fichier qui est testé puis affiché après une mise en forme.
[/Edit]