Construction fichier xml via dom et php

Résolu
husobom -  
 husobom -
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   Statut Contributeur Dernière intervention   922
 
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
husobom
 
J'ai fait comme tu as dit et ça marche exactement comme je veux, merci beaucoup beaucoup :)
0