Posez votre question Signaler

Construction fichier xml via dom et php [Résolu]

husobom - Dernière réponse le 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.
Lire la suite 

Construction fichier xml via dom et php »

2 réponses
Réponse
+2
moins plus
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' );
?>
Ajouter un commentaire
Réponse
+0
moins plus
J'ai fait comme tu as dit et ça marche exactement comme je veux, merci beaucoup beaucoup :)
Ajouter un commentaire
Ce document intitulé « Construction fichier xml via dom et php » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?