Construction fichier xml via dom et php

[Résolu/Fermé]
Signaler
-
 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.

2 réponses

Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
914
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

J'ai fait comme tu as dit et ça marche exactement comme je veux, merci beaucoup beaucoup :)