Bonjour,

Je parse un flux xml et ça fonctionne bien excepté pour les champs "category" qui sont présent plusieurs fois pour le même item :

			<category>19</category>
			<category>22</category>
			<category>27</category>
			<category>73</category>
			<category>108</category>
			<category>117</category>
			<category>122</category>
			<category>139</category>
			<category>141</category>


Pour cet exemple, je ne récupère que la 1ère catégorie (19).
Comment récupérer l'ensemble des champs "category" puisqu'ils portent le même nom ?

Merci de votre aide.
Merci mais j'avoue que je ne saisie pas trop le mécanisme.
En fait j'ai déjà un foreach dans mon parseur php.
D'une manière générale, est-il normal d'avoir plusieurs tags portant le même nom dans le même flux XML ?
Salut,

Si tu as un flux RSS tu verras que tu as plusieurs fois le champ item, donc oui c'est normal.

Mais dans la mesure ou tu parses ton fichier XML avec PHP il nous faudrait le bout de code.

A+
Voici la fonction que j'utilise et qui marche très bien pour les autres flux que j'utilise :


function lit_rss($fichier,$objets) {
	if($chaine = @implode("",@file($fichier))) {
		$tmp = preg_split("/<\/?"."item".">/",$chaine);
		for($i=1;$i<sizeof($tmp)-1;$i+=2)
			foreach($objets as $objet) {
				$tmp2 = preg_split("/<\/?".$objet.">/",$tmp[$i]);
				$resultat[$i-1][] = @$tmp2[1];
			}
		return $resultat;	
	}
}



Ensuite, j'appelle la fonction comme ceci :


$rss = lit_rss("http://www.domaine.com/flux_rss.php",array('id','title','description','category',...));


Et je récupère les infos comme ceci :


foreach($rss as $tab) { 

$id = $tab[0];
$title= $tab[1];
$description= $tab[2];
$category= $tab[3];
...

}


Merci pour l'aide
Hop,

Dans la mesure ou tu essais de parser un RSS, je te conseille de passer par MagieRSS ou si tu as PHP5 d'utiliser SimpleXML.

A+
J'ai tenté avec magpierss mais le problème vient toujours de category.
Il y a qq chose que je dois mal faire...
Voici la fonction que j'utilise avec magpierss :


require_once("magpierss/rss_fetch.inc");
function FeedParser($url_feed, $nb_items_affiches=10)
{

  $rss = fetch_rss($url_feed);

  if (is_array($rss->items))
  {
   $items = array_slice($rss->items, 0, $nb_items_affiches);

   $html = "<ul>\n";
   foreach ($items as $item)
   {
    $html .= "<li>";
    $html .= "<a href=\"".$item['link']."\">";
    $html .= $item['title']."</a></li>\n";
   $html .= $item['category'];
   }
   $html .= "</ul>\n";
 }

 return $html;
}
echo FeedParser("http ... /rss.php");



Et ça m'affiche les catégories sous cette forme :

1922273573108113116122129134139141

Comment les isoler les unes des autres ?
Essai de faire un print_r de $rss, tu verras peut-être la structure du tableau php et tu comprenderas comment MagieRSS le construit.

A+
oui il récupère la même chose :

Smiley category => 19222627356173108122126139

Pas moyen de savoir si le problème vient du parseur (j'en ai testé 3)
ou du flux...