HTML -> XML -> RSS : DOM
Posté : 29 oct. 2007, 12:33
Bonjour,
Après avoir recherché le moyen le plus simple d'arriver à générer un flux RSS, j'en suis arrivé à la conclusion que l'utilisation des fonctions DOM de PHP était la meilleure voie !
Je cherche donc à générer une flux RSS à partir d'un fichier HTML structuré en tableaux, j'ai pas mal avancé mais je bute encore sur quelques points :
Mon fichier HTML est modélisé de la sorte (je ne poste pas l'entête ni le CSS):
Je souhaiterais que mon flux RSS soit de la sorte :
Pour l'instant, j'ai codé ceci :
Mes problèmes sont :
- pour l'instant, j'extraie chaque élément du tableau à l'aide de la fonction getElementsByTagName('a'); car je n'arrive pas à identifier la fonction PHP suffisamment précise pour m'identifier le <tr class="nmr1">. Identifier tr, OK, mais comment préciser uniquement les tags tr donc le class est nmr1 ?
- ensuite, est-il possible d'identifier un champ par rapport à un autre : par exemple, une fois que j'ai identifié les lignes de mon tableau dont le class est nmr1, est-il possible de "descendre" dans l'arborescence XML pour trouver la description, le lien ?
J'espère avoir été clair ! Merci d'avance pour vos réponses.
N.B. : j'ai beaucoup cherché sur Google, a priori il n'y a pas beaucoup de gens qui utilisent les DOM dans ce cas précis, car la plupart du temps les RSS sont générés à partir d'une BDD locale, et non extraite d'un fichier HTML.[/code]
Après avoir recherché le moyen le plus simple d'arriver à générer un flux RSS, j'en suis arrivé à la conclusion que l'utilisation des fonctions DOM de PHP était la meilleure voie !
Je cherche donc à générer une flux RSS à partir d'un fichier HTML structuré en tableaux, j'ai pas mal avancé mais je bute encore sur quelques points :
Mon fichier HTML est modélisé de la sorte (je ne poste pas l'entête ni le CSS):
Code : Tout sélectionner
<table>
<tbody><tr align="center">
<td colspan="2" class="mois">Octobre</td>
</tr>
<tr>
<td colspan="2" class="jour">Mardi 23 Octobre</td>
</tr>
<tr class="nmr1">
<td align="center" valign="top" width="60">
<a href="http://monlien1.com" class="objet">
<b>007</b>
</a>
</td>
<td>
<a href="http://monlien1.com class="objet">
Description de l'objet 007
</a>
</td>
</tr>
etc...
Code : Tout sélectionner
<?xml version="1.0" encoding="iso-8859-1"?><rss version="2.0">
<channel>
<title>Flux des objets</title>
<description>Flux RSS des objets</description>
<lastBuildDate>Wed, 27 Jul 2005 00:30:30 -0700</lastBuildDate>
<link>http://localhost/script.html</link>
<item>
<title>007 - Description de l'objet 007</title>
<description>Description de l'objet 007</description>
<pubDate>Tue, 23 Oct 2007 00:30:30 -0700</pubDate>
<link>http://monlien1.com</link>
</item>
(etc...)
</channel>
</rss>
</xml>
Code : Tout sélectionner
<?php
$ressource="http://localhost/script.html";
$doc = new DOMDocument();
$doc->loadHTMLFile($ressource);
if ($doc)
{
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?><rss version=\"2.0\">\n";
echo "<channel>\n";
echo "<title>Flux des objets</title>\n";
echo "<description>Flux RSS des objets</description>\n";
echo "<lastBuildDate>Wed, 27 Jul 2005 00:30:30 -0700</lastBuildDate>\n";
echo "<link>".$ressource."</link>\n";
$name = $doc->getElementsByTagName('a');
foreach ($name as $tag)
{
echo "<item>\n";
echo "<title>".$tag->nodeValue."-</title>\n";
echo "<description></description>\n";
echo "<pubDate>Mon, 25 Jul 2005 00:30:30 -0700</pubDate>\n";
echo "<link>";
echo $tag->getAttribute("href");
echo "</link>\n";
echo "</item>\n";
}
}
echo "</channel>\n";
echo "</rss>\n";
echo "</xml>\n";
?>
- pour l'instant, j'extraie chaque élément du tableau à l'aide de la fonction getElementsByTagName('a'); car je n'arrive pas à identifier la fonction PHP suffisamment précise pour m'identifier le <tr class="nmr1">. Identifier tr, OK, mais comment préciser uniquement les tags tr donc le class est nmr1 ?
- ensuite, est-il possible d'identifier un champ par rapport à un autre : par exemple, une fois que j'ai identifié les lignes de mon tableau dont le class est nmr1, est-il possible de "descendre" dans l'arborescence XML pour trouver la description, le lien ?
J'espère avoir été clair ! Merci d'avance pour vos réponses.
N.B. : j'ai beaucoup cherché sur Google, a priori il n'y a pas beaucoup de gens qui utilisent les DOM dans ce cas précis, car la plupart du temps les RSS sont générés à partir d'une BDD locale, et non extraite d'un fichier HTML.[/code]