Construction fichier xml via dom et php

Résolu/Fermé
husobom - 18 avril 2008 à 21:10
 husobom - 19 avril 2008 à 09:35
Bonjour,
J'ai un petit soucis concernant la création d'un fichier, en fait mon programme consiste à analyser un fichier texte et à chaque fois qu'il y a un saut de ligne je veux récupérer le texte dans une balise que j'ai nommé contenu, le problème c'est que cela récupère bien le contenu mais on dirait que ca écrase celui qu'il y avait avant à chaque fois, voici mon code :
<?php
$fileName = "plagiat.txt";
$file = fopen($nomFichier,"r+");
$tab = file($fileName);
$lignes=sizeof($tab);
$docXML = new DOMDocument();
$plagiat=$docXML->createElement("plagiat");
$docXML->appendChild($plagiat);
$contenu = $docXML->createElement("contenu");
$plagiat->appendChild($contenu);

$j=1;
for ($i=0;$i<$lignes;$i++)
{
$cool = ord($tab[$i]); //on récupère la valeur ASCII d'une ligne
if ($cool==13) // Comparaison avec la valeur ASCII correspondant au retour à la ligne
echo "Ici il y avait une ligne vide"."<br>";
else
{
echo $tab[$i]."<br>";
$texte[$i]=$docXML->createTextNode($tab[$i]);
$contenu->setAttribute('id',$j);
$contenu->appendChild($texte[$i]);
$j++;
}
}
$docXML->save('plagiat.xml');

et le fichier XML me donne ca :
<plagiat>
−<contenu id="3">
Le bonheur n'est pas le fruit de la paix, le bonheur, c'est la paix mꭥ.
Plus belle la vie.
</contenu>
</plagiat>

Bon déjà il semble y avoir d'autres problèmes vu qu'on devrait avoir "la paix même" et ici il récupère "la paix m?" si quelqu'un a aussi une explication pour ca je suis preneur :)
Bref moi me je voudrais plutot quelque chose du genre.
<plagiat>
−<contenu id="1">
Le bonheur n'est pas le fruit de la paix, le bonheur, c'est la paix mꭥ.
Plus belle la vie.
</contenu>
−<contenu id="2">
Plus belle la vie.
</contenu>
</plagiat>


Voila, j'espère que vous avez compris mon problème et que vous pourrez m'aider, je vous remercie d'avance.
A voir également:

2 réponses

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
19 avril 2008 à 00:37
salut,

pour le fait qu'il n'y ai qu'un élément je pense que c'est parce que ta boucle est mal construite mais je n'ai pas testé.
pour le problème d'accent c'est qu'il faut encoder le texte en UTF-8.
<?php
	$fileName = 'plagiat.txt';
	$file = fopen( $nomFichier , 'r+' );
	$tab = file( $fileName );
	$lignes = sizeof( $tab );
	$docXML = new DOMDocument( '1.0' , 'ISO-8859-1' );
	$plagiat=$docXML->createElement( 'plagiat' );
	$docXML->appendChild( $plagiat );
	
	$j = 1;
	for ( $i = 0 ; $i < $lignes ; $i++ )
	{
		$cool = ord( $tab[$i] );
		if( $cool == 13 )
		{
			echo 'Ici il y avait une ligne vide<br />';
		}
		else
		{
			echo $tab[$i] , '<br />';
			$contenu = $docXML->createElement( 'contenu' );
			$contenu->setAttribute( 'id' , $j );
			$text = utf8_encode( $tab[$i] );
			$child = $docXML->createTextNode( $text );
			$contenu->appendChild( $child );
			$plagiat->appendChild( $contenu );
			$j++;
		}
	}
	$docXML->save( 'plagiat.xml' );
?>
2
J'ai fait comme tu as dit et ça marche exactement comme je veux, merci beaucoup beaucoup :)
0