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é