Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML
XML Forum d'entraide sur XML avec PHP. Exemples : SimpleXML, OpenXML... Avant de poster -> FAQ XML, Cours XML et Sources XML
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/02/2006, 16h11   #1
Membre habitué
 
Inscription : décembre 2003
Messages : 650
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : décembre 2003
Messages : 650
Points : 115
Points : 115
Par défaut [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 :
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 :
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é
firejocker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2006, 16h15   #2
Membre éclairé
 
Avatar de XtofRoland
 
Inscription : août 2005
Messages : 361
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 361
Points : 340
Points : 340
/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!!!
XtofRoland est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2006, 16h39   #3
Membre habitué
 
Inscription : décembre 2003
Messages : 650
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : décembre 2003
Messages : 650
Points : 115
Points : 115
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"
firejocker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2006, 16h42   #4
Membre émérite
 
Avatar de macbook
 
Inscription : février 2006
Messages : 840
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 840
Points : 924
Points : 924
Si tu peux traiter ta chaine à coup de trim() ou de nl2br() pendant le parsage de ton xml ?
__________________
Consultant idéaliste.
macbook est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2006, 16h44   #5
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

En effet, solution de rechange : str_replace('<br />', '', nl2br($string))
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2006, 16h49   #6
Membre habitué
 
Inscription : décembre 2003
Messages : 650
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : décembre 2003
Messages : 650
Points : 115
Points : 115
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
firejocker est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h42.


 
 
 
 
Partenaires

Hébergement Web