Bonjour, en m'inspirant du tutorial trouvé sur phpfrance j'essaie de créer moi même mon propre parser.
Seulement sur les attributs du type url avec parametre (pas les autres attributs qui fonctionne tres bien) j'ai un probleme. L'url se retrouve decoupée en 3 morceaux. (je ne comprend pas pourquoi)
Voici l'url telle qu'elle ecrite dans le fichier xml:
Et elle se retrouve découpé en 3 moceaux comme ci le parser la lisait en 3 fois ou comme ci c'etais 3 elements différent:
Pouvez m'expliquer pourquoi elle se retrouve découpée en 3 ? Et eventuellement le moyen de résoudre ce probleme, merci.
Voici un exemple de mon probleme que j'ai simplifié et qui fonctionne si vous voulez le tester.
la page contenant le parser :
Code :
- <html>
- <?php
- function ouvre ($parser, $name, $attrs){
- global $DANS_LINK ;
- global $link ;
- if ($name == "LINK" ){
- $DANS_LINK = TRUE ;
- }
- }
- function ferme ($parser, $name){
- global $DANS_LINK ;
- global $link ;
- if ($name == "LINK" ){
- print("<b>".$link."</b><br>\n" );
- $DANS_LINK = FALSE ;
- }
- }
- function texte ($parser, $data_text){
- global $DANS_ITEM ;
- global $DANS_LINK ;
- global $link ;
- if ($DANS_LINK) {
- echo( $data_text );
- print (($link)."<br>\n" );
- }
- }
- function default_f(){
- return TRUE;
- }
- $xml_parser = xml_parser_create();
- xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
- xml_set_element_handler($xml_parser, "ouvre", "ferme" );
- xml_set_default_handler($xml_parser,"default_f" );
- xml_set_character_data_handler($xml_parser, "texte" );
- if(!($fp = @fopen("rss2.xml", "r" ))){
- die("<B>Impossible de Trouver le fichier. Fin d'execution</B>" );
- }
- while ($data = fread($fp, 4096)){
- if(!xml_parse($xml_parser, $data, feof($fp))){
- die(sprintf("Erreur XML : %s a la ligne %d",
- xml_error_string(xml_get_error_code($xml_parser)),
- xml_get_current_line_number($xml_parser)));
- }
- }
- xml_parser_free($xml_parser);
- ?>
- </html>
|
le fichier Xml rss2.xml
Code :
- <?xml version="1.0" ?>
- <infos>
- <item>
- <link>http://www.nimportequoi.com/index.php?area=news&id=109460132630907800</link>
- </item>
- <item>
- <link>http://www.nimportequoi.com/index.php?area=news&id=109458649790125600</link>
- </item>
- <item>
- <link>http://www.nimportequoi.com/index.php?area=news&id=109416553474586500</link>
- </item>
- <item>
- <link>http://www.nimportequoi.com/index.php?area=news&id=109400056623116000</link>
- </item>
- </infos>
|
Merci de vos explications. Je ne veux pas utiliser la méthode DOM car ce n'est que de la lecture donc SAX s'impose. Pour moi c'est un peu comme une initiation au xml j'essairai DOM plustard quand je maitriserai deja la méthode SAX.