Copier un fichier txt en fichier xml en JAVA

Résolu/Fermé
Rare55 - 14 févr. 2008 à 15:40
frangipane44 Messages postés 70 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 11 octobre 2012 - 20 févr. 2008 à 12:07
Bonjour,

J'ai un fichier txt qui regroupe diverses informations concaténées (N°article, date...), cependant, il n'est pas utilisable tel quel dans une application, je dois le modifier, c'est à dire séparer et spécifier chaque informations et enregistrer le tout dans un fichier xml.
Je dois absoluement le faire sur JAVA, cependant mes connaissances sont faibles.

J'ai réussi à ouvrir et copier un fichier txt dans un autre.
Mais je n'arrive pas à récupérer une partie du fichier txt et complété le fichier xml.

Pour etre plus claire, mon fichier txt se présente comme ça:
NA00541100101498 MONTAGE SUSPENSION PRIMAIRE
...

Je voudrais un fichier xml comme ça:
<VALUE attributeName="Index marché" type="Simple" value="NA" />
<VALUE attributeName="Numéro bordereau" type="Simple" value="00054" />
<VALUE attributeName="Titre Documents" type="Simple" value=" MONTAGE SUSPENSION PRIMAIRE" />
...


Quelqu'un peut m'aider????
A voir également:

27 réponses

frangipane44 Messages postés 70 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 11 octobre 2012 2
14 févr. 2008 à 17:39
Tiens j'ai écris ça vite fait :

public class Test{

		public static void main(String[] args){
			//le fichier texte
			String fichier ="fichiertexte.txt";
			//le fichier XML
			String fichierXML ="fichierXML.xml";
			//les attributs à insérer dans le xml
			String index = "";
			String bordereau = "";
			String titre = "";			

			try{
				//fichier en lecture
				InputStream ips=new FileInputStream(fichier); 
				InputStreamReader ipsr=new InputStreamReader(ips);
				BufferedReader flux=new BufferedReader(ipsr);
				//fichier en écriture
				FileWriter fw = new FileWriter (fichierXML);
				BufferedWriter bw = new BufferedWriter (fw);
				PrintWriter fichierSortie = new PrintWriter (bw); 
				String ligne;
				//on lit chaque ligne du fichier texte une par une
				while ((ligne=flux.readLine())!=null){
					//On lit les 2 premiers caractères : comme dans ton exemple "NA"
					index = ligne.substring(0, 1);
					//On lit les 10 caractères suivants
					bordereau = ligne.substring(2, 11);
					//La fin de la ligne
					titre = ligne.substring(12);
					fichierSortie.print("<VALUE attributeName=\"Index marché\" type=\"Simple\" value=\""); 
					fichierSortie.print(index);
					fichierSortie.println("\">");//le println pour aller à la ligne
					fichierSortie.print("<VALUE attributeName=\"Numéro bordereau\" type=\"Simple\" value=\""); 
					fichierSortie.print(bordereau);
					fichierSortie.println("\">");
					fichierSortie.print("<VALUE attributeName=\"Titre Documents\" type=\"Simple\" value=\""); 
					fichierSortie.print(titre);
					fichierSortie.println("\">");
				}
				//On ferme les flux
				flux.close(); 
				fichierSortie.close();
			}		
			catch (IOException e){
				e.printStackTrace();
				// ou System.out.println("le message d'erreur que l'on souhaite");
			}
		}
}


à toi de tester, je ne sais pas du tout si ça marche j'ai pas eu le temps de tester mais bon ça peux ptet t'aider à comprendre.
Bon courage.
1
frangipane44 Messages postés 70 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 11 octobre 2012 2
14 févr. 2008 à 16:42
Bonjour,

le fichier xml existe déjà? Ou tu dois le créer?
Si tu le créés, tu as juste à parcourir ton fichier txt en lecture, récupérer ce dont tu as besoin (lecture caractère par caractère donc) et écrire ton fichier xml avec des valeurs en dur et tes variables récupérées du fichier txt

Si ça peut t'aider...:
pour apprendre le java, voilà ma bible :
http://www.jmdoudoux.fr/java/dej/index.htm la partie sur les flux dans le chapitre 19 concerne ton sujet

Et voici un exemple qui t'aidera peut-être pour ton cas :
https://www.u-picardie.fr/ferment/java/chap15_c.html
0
Merci pour ton aide!!

Il faut que je créé le fichier xml. Le truc c'est que ça fait des années que j'ai pas développer et que là le projet et urgent!!
Je vais lire ce que tu me conseille et reviendrais si j'ai d'autres questions!

Merci encore
0
Merci pour ton bout de code, il marche très bien!!!
J'ai plus qu'à le commpléter!!!

J'ai encore un petit soucis.
Je ne peux pas afficher tous les fichiers xml que je crée!!!!J'ai le message suivant:

La page XML ne peut pas être affichée
Impossible d'afficher l'entrée XML en utilisant la feuille de style XSL. Corrigez l'erreur, puis cliquez sur le bouton Actualiser ou réessayez ultérieurement.


--------------------------------------------------------------------------------

Un caractère incorrect a été trouvé dans un contenu de texte. Erreur de traitement de la ressource file:///C:/Documents and...

<VALUE attributeName="Index march


Il manque quelque chose dans le code ou ça vient d'autre chose?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
frangipane44 Messages postés 70 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 11 octobre 2012 2
15 févr. 2008 à 09:27
Tu as mis quoi dans ton en-tête XML?
0
Rien!! C'est peut-être le problème!!

je fais:

String sortie ="sortie.xml";

try {
FileWriter fw = new FileWriter (sortie);
BufferedWriter bw = new BufferedWriter (fw);
PrintWriter fichierSortie = new PrintWriter (bw);
fichierSortie.println (chaine+"\n test en ecriture !!");
fichierSortie.close();
}
catch (Exception e){
System.out.println(e.toString());
}
0
Salut
Je suis toujours coincée avec le même problème!!
Une piste pour m'aider????
0
Bonjour c'est quoi ton vrai probleme tu veux afficher le resultat sous forme de page html en pdf ou non?
si c'est cela c'est normal que tu as ce probleme il te faut modifier ta feuille de style je pense que le probleme vient de la.
si tu as d'autres problemes tu peux demander.
Bon courage.
0
Oui le problème vient de feuille de style et j'ai ajouté les librairies qu'il faut mais mon problème reste le même!!
Je suppose qu'il me manque des lignes de code sur la façon d'enregistrer le fichier mais je ne vois vraiment pas comment faire!

Dans tous les cas merci pour ton aide ;-)
0
Mon problème venait d'une librairie manquante!!
D'après tout ce que j'ai lu il faudrait que j'utilise une fonction de transformation mais je n'ai pas tout compris

Il me faudrait des exemples ou des explications plus claires sur le sujet svp!!!
0
Mais oui je suis tout à fait d'accord avec toi mais tu veux faire quoi?créer une page html un pdf?si tu me dis pas je pourrais pas t'aider.
dis moi exactement ce que tu veux faire.et je pourrais t'aider.
Bon courage
0
Je veux créer un fichier .xml.

En fait j'ai une application qui récupère les données du fichier xml. Et à la base j'ai un fichier txt.

Je lis les données du fichier et je les ecris dans un fichier .xml, mais je n'ai rien qui s'affiche!!!!
0
frangipane44 Messages postés 70 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 11 octobre 2012 2
18 févr. 2008 à 16:13
Bonjour,

tu n'as rien qui s'affiche? Ton fichier xml est vide? Tu l'ouvres avec un éditeur de texte ou un navigateur ton fichier xml?
A quoi va te servir ton fichier xml : à un traitement? à un affichage?.....?
0
Salut!

Quand je l'ouvre, j'ai uniquement le message d'erreur:

La page XML ne peut pas être affichée
Impossible d'afficher l'entrée XML en utilisant la feuille de style XSL. Corrigez l'erreur, puis cliquez sur le bouton Actualiser ou réessayez ultérieurement.


--------------------------------------------------------------------------------

Un caractère incorrect a été trouvé dans un contenu de texte. Erreur de traitement de la ressource file:///C:/Documents and...


Par la suite il me sert pour un traitement de document dans une application.
0
frangipane44 Messages postés 70 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 11 octobre 2012 2
18 févr. 2008 à 16:25
Essaye de l'ouvrir avec un éditeur de texte.
Si ton fichier XML va te servir pour un traitement, tu n'auras pas besoin de feuille de style XSL.
0
Effectivement avec un éditeur de texte ça marche!!
Mais, pour ma culture, tu peux m'expliquer comment on modifie la feuille de style?
0
frangipane44 Messages postés 70 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 11 octobre 2012 2
18 févr. 2008 à 17:08
Je peux pas te répondre avec certitude j'ai jamais trop fait de XSL (1h de cours il y a longtemps).
En fait pour afficher ton fichier XML tu peux lui assigner une feuille de style XSL qui stylisera/transformera/groupera/etc... ton fichier XML pour l'afficher comme tu le souhaites. Un peu comme une CSS pour le HTML.
Voilà pour ce que je sais (qui n'est peut-être pas forcément exact...mais d'autres corrigeront)
Si tu veux en savoir plus tu peux aller voir là : https://www.commentcamarche.net/contents/1337-mise-en-page-de-xml-avec-xsl
0
si c'est juste pour créer un fichier xml il ne doit pas avoir cette erreur par ce que pour moi cela doit venir d'une feuille de style(XSL).Depuis tout à l'heure j'essaie de t'aider mais tu n'es pas assez claire tu veux afficher ton fichier xml où?sur le terminal?si c'est cela je vois pas le problème cela se fait tout simplement comme la lecture d'un fichier : tant qu'on est pas à la fin du fichier afficher tout son contenu tout en respectant sa structure.
Pour cela il te faut créer une class java(un java bean par exemple) qui se permet de recuperer les données ou je sais quelque chose de ce genre.Mais le mieux c'est d'être plus explicite sinon on peux rien faire pour toi.
Bon courage
0
Salut!

L'application que j'essaie de faire c'est pour le boulot (pour dépaner un collègue)
Je sais pas trop quoi te donner comme information en plus étant donné que j'en ai pas beaucoup plus.
On m'a demandé de créer une application java qui lit les données d'un fichier texte et qui les enregistre dans un fichier xml de la façon suivante:

Référence Document" type="Simple" value="100101498 AA ">
<VALUE attributeName="Numéro bordereau" type="Simple" value="00541">
<VALUE attributeName="Numéro Constructeur" type="Simple" value="100101498 ">
<VALUE attributeName="Indice Constructeur" type="Simple" value="AA ">


Ensuite, il est traité par une autre application qui met toutes ces info dans une base de données et qui récupère les documents correspondants.
Je ne suis pas obligée d'ouvrir le fichier xml mais j'aimerais bien réussi à résoudre cette histoire de feuille de style, comme ça si quelqu'un veut l'ouvrir (on ne sait jamais) il ne sera pas obligé de passer par la source du fichier!

J'espère avoir été plus claire. Mais si tu veux passe moi ton mail pour que je t'envoie les liens ça sera peut-être mieux!
0
j'ai résolu mon problème de feuille de style (ou presque).
Elle apparaît de la façon suivant et je ne voit pas ce qui créé ce retrait:

- <VALUE attributeName="Reference Document" value="100101498 AA">
- <VALUE attributeName="Index marche" type="Simple" value="NA">
- <VALUE attributeName="Numero bordereau" type="Simple" value="00541">
- <VALUE attributeName="Numero Constructeur" type="Simple" value="100101498">
- <VALUE attributeName="Indice Constructeur" type="Simple" value="AA">


En plus en bas de page, j'ai le message suivant:

Les balises suivantes n'ont pas étaient fermées:
VALUE,
VALUE,
...


Pourtant je termine bien mon programme avec:
flux.close(); 
fichierSortie.close();


Une petite idée????
0
La page s'affiche comme ça:

- <VALUE attributeName="Reference Document" value="100101498 AA"> 
     - <VALUE attributeName="Index marche" type="Simple" value="NA"> 
           - <VALUE attributeName="Numero bordereau" type="Simple" value="00541"> 
                - <VALUE attributeName="Numero Constructeur" type="Simple" value="100101498"> 
                     - <VALUE attributeName="Indice Constructeur" type="Simple" value="AA"> 
0
frangipane44 Messages postés 70 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 11 octobre 2012 2
19 févr. 2008 à 14:43
Faut mettre un "/ à la fin de chaque balise :
- <VALUE attributeName="Reference Document" value="100101498 AA"/>
- <VALUE attributeName="Index marche" type="Simple" value="NA"/>
- <VALUE attributeName="Numero bordereau" type="Simple" value="00541"/>
- <VALUE attributeName="Numero Constructeur" type="Simple" value="100101498"/>
- <VALUE attributeName="Indice Constructeur" type="Simple" value="AA"/>
0
J'ai fermé toutes les balises et maintenant je n'ai plus que le message:

Un seul élément de niveau supérieur est autorisé dans un document XML. Erreur de traitement de la ressource file:///C:/Docu...
0