IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[XML] [EXPAT] traitement d'un flux de donnée xml contenant des \n


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Points : 546
    Points
    546
    Par défaut [XML] [EXPAT] traitement d'un flux de donnée xml contenant des \n
    Slt,

    j'utilise le code suivant pour parser un fichier XML (code trouvé 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <?php
    $file = "donnees.xml";
    $depth = array();
     
    function debutElement($parser, $name, $attrs)
    {
       global $depth;
       for ($i = 0; $i < $depth[$parser]; $i++) {
           echo " &nbsp";
       }
       echo "$name<br>";
       $depth[$parser]++;
    }
     
    function MemoTexte($parseur, $texte){
       for ($i = 0; $i < $depth[$parser]; $i++) {
           echo " &nbsp";
       }
       echo "$texte<br>";
    }
     
    function finElement($parser, $name)
    {
       global $depth;
       $depth[$parser]--;
       for ($i = 0; $i < $depth[$parser]; $i++) {
           echo " &nbsp";
       }
       echo "$name<br>";
    }
     
    $xml_parser = xml_parser_create();
    xml_set_element_handler($xml_parser, "debutElement", "finElement");
    xml_set_character_data_handler($xml_parser, "MemoTexte");
    if (!($fp = fopen($file, "r"))) {
       die("Impossible d'ouvrir le fichier XML");
    }
     
    while ($data = fread($fp, 4096)) {
       if (!xml_parse($xml_parser, $data, feof($fp))) {
           die(sprintf("erreur XML : %s à la ligne %d",
                       xml_error_string(xml_get_error_code($xml_parser)),
                       xml_get_current_line_number($xml_parser)));
       }
    }
    xml_parser_free($xml_parser);
    ?>
    ca marche tres bien, sauf quand mon XML contient des \n,

    exemple de fichier XML :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <document>
    	<content>	    
    		<test>
                <nom>ALPHA</nom>
    		    <resultat>OK</resultat>
    		</test>
    		<test>
                <nom>BETA</nom>
    		    <resultat>
                Cette ligne n'apparait pas :(
                BAD</resultat>
    		</test>
    	</content>	  
    </document>

    Que se passe il à votre avis ?

    sur le 2nd element, j'ai que le "BAD" qui est affiché

  2. #2
    Membre averti Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Points : 392
    Points
    392
    Par défaut
    /n = retour a la ligne, si tu le retire il manque un balise fermante.
    pas lu ton code mais vu ce que tu marques ...
    Le but de tout developpeur OO est de devenir une référence.
    Mon avatar est un ambigramme, les curieux peuvent le retourner ;-)
    Aider <> Faire a la place de!!!

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Points : 546
    Points
    546
    Par défaut
    t'as pas compris, mon probleme apparait lorsque mes données contiennent des \n pas au niveau des balises,

    ex :

    <resultat>
    Cette ligne n'apparait pas :(
    BAD</resultat>

    je ne recupere que "BAD" et non "Cette ligne n'apparait pas :( \n BAD"

  4. #4
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Si tu peux traiter ta chaine à coup de trim() ou de nl2br() pendant le parsage de ton xml ?
    Consultant idéaliste.

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    En effet, solution de rechange : str_replace('<br />', '', nl2br($string))

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Points : 546
    Points
    546
    Par défaut
    nan, c'est la bibliotheque php qui fais le parsing,

    mes fonctions sont lancés qu'en cas de balise ouvrante et fermante, et texte
    or texte ne choppe que "tous les caracteres" qui sont sur la meme ligne que la balise fermante

Discussions similaires

  1. traitement d'un flux massif en hexa avec des opérateurs logique
    Par mimile06 dans le forum Programmation et administration système
    Réponses: 5
    Dernier message: 04/09/2015, 11h53
  2. Parser un fichier XML contenant des accents
    Par Shadew dans le forum Général Python
    Réponses: 4
    Dernier message: 17/06/2015, 18h27
  3. lecture d'un noeud XML contenant des nombres
    Par le026 dans le forum Débuter
    Réponses: 1
    Dernier message: 08/05/2009, 14h11
  4. Soucis flash XML contenant des liens dans un texte dynamique
    Par codefalse dans le forum ActionScript 1 & ActionScript 2
    Réponses: 8
    Dernier message: 15/08/2007, 16h39
  5. [JDOM] Parser un xml contenant des caractères spéciaux
    Par Baptiste Wicht dans le forum Format d'échange (XML, JSON...)
    Réponses: 16
    Dernier message: 19/07/2006, 11h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo