Bonjour à tous,
Je viens de nouveau vers vous car je bloque au sujet d'un petit bout de parser xml que j'ai tenté de faire:

Le problème vient des caractères spéciaux, et plus précisément à ce moment là:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
xml_set_character_data_handler($parseurXML, "fonctionTexte");
Enfin bref, j'ai beaucoup de mal à m'expliquer, ne comprenant pas moi-même l'erreur, alors je vous présente une partie du code, une partie du fichier xml, et pour finir l'affichage:


Tout d'abord, un petit bout de parser:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 // Création du parseur XML
            $parseurXML = xml_parser_create("UTF-8");
 
            // Je précise le nom des fonctions à appeler
            // lorsque des balises ouvrantes ou fermantes sont rencontrées
            xml_set_element_handler($parseurXML, "fonctionBaliseOuvrante"
                                               , "fonctionBaliseFermante");
 
            // Je précise le nom de la fonction à appeler
            // lorsque du texte est rencontré
            xml_set_character_data_handler($parseurXML, "fonctionTexte");
 
            // Ouverture du fichier
            $fp = fopen($fichier, "r");
            if (!$fp) die("Impossible d'ouvrir le fichier XML");
 
            // Lecture ligne par ligne
            while ( $ligneXML = fgets($fp, 1024)) {
                // Analyse de la ligne
                // REM: feof($fp) retourne TRUE s'il s'agit de la dernière
                //      ligne du fichier.
                xml_parse($parseurXML, $ligneXML, feof($fp)) or
                    die("Erreur de parsage XML.");
            }
 
            // On libère le parseur
            xml_parser_free($parseurXML);
            // Et on arrête la lecture du fichier
            fclose($fp);
La fonction qui récupère mon texte ici:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function fonctionTexte($parseur, $texte)
            {
                global $derniereBaliseRencontree;
                $texte = utf8_decode($texte);
                // Selon les cas, nous affichons le texte
                // ou nous proposons un lien
                global $texteEntier;
                //echo "Test: ".$derniereBaliseRencontree." Et le texte:".$texte;
                // On cherche si on rencontre une balise, et si oui: ajouter du texte à la chaine.
                switch ($derniereBaliseRencontree) {
                    case "IDAGENCE": 
                        echo "ID Agence: ".$texte."<br/>";
                        $texteEntier .= $texte;
                        break;
                    case "RAISONSOCIALEAGENCE":
                        echo "Raison Sociale Agence: ".$texte."<br/>";
                        $texteEntier .=  ";-;-;".$texte;
                        break; /* Suite du code */
Une partie de mon fichier xml que je traite:
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
<?xml version="1.0" encoding="UTF-8"?>
 
<annonces>
        <annonce>
                <idAgence>100000001éé</idAgence> <!-- (identifiant interne unique de l'agence) -->
                <raisonSocialeAgence>Rodécom SARL</raisonSocialeAgence> <!--  (string) -->
                <enseigneAgence>Rodacom</enseigneAgence> <!--  (string) -->

Et pour finir, l'affichage qui rate:
ID Agence: 100000001
ID Agence: éé
Raison Sociale Agence: Rod
Raison Sociale Agence: écom SARL
Enseigne Agence: Rodacom
On peut voir en fait, que dès qu'il y a un accent, il fait appel deux fois d'affilé à ma fonction qui récupère le texte ... Pourquoi ? Comment pallier à cela ? xD

Je vous remercie d'avance pour toutes les réponses que vous pourriez m'offrir .