Bonjour
je voudrai savoir quelle technologie utilisée pour creer un fchier xml à partir de données extraites d'un fichier texte (txt).
Merci
-----
Bonjour
je voudrai savoir quelle technologie utilisée pour creer un fchier xml à partir de données extraites d'un fichier texte (txt).
Merci
Bonjour,
si j'ai bien compris, tu as des données dans un fichier texte que tu aimerais mettre au format xml.
Pour cela, je pense (et j'espere me tromper) qu'il n'existe rien d'automatique, il va falloir te faire un petit programme. Celui - ci pourrait etre tres simple, tous dépend de ton fichier texte.
Merci pour ta reponse
mais j'aimerai savoir quel langage faudrait il choisir .
Dernière modification par yoda1234 ; 15/05/2007 à 10h43.
cela dépend de toi et de la structure de ton fichier de données (tu peux en mettre un bout ici)
Le perl est vraiment bon pour parser les fichiers (permet l'utilisation d'expression reguliere)
Mais c'est aussi faisable en java ou autre. Cela depend de la complexité du fichier de données et de ta connaissance des expressions regulieres.
Disons j'aimerai le faire en java ou php mais je suis un peu limité pour ses langages mais tu ne sais pas lequel est le plus performant?
merci
Dernière modification par yoda1234 ; 15/05/2007 à 10h43.
exemple de donnéscela dépend de toi et de la structure de ton fichier de données (tu peux en mettre un bout ici)
Le perl est vraiment bon pour parser les fichiers (permet l'utilisation d'expression reguliere)
Mais c'est aussi faisable en java ou autre. Cela depend de la complexité du fichier de données et de ta connaissance des expressions regulieres.
CMD <= admin log "CVMX: 2 content =netmetrics:GDE"
CMD <= admin log "CVMX: 2 content =AT:0612222150"
CMD <= admin log "CVMX: 2 content =metrics:AA:0810635202"
CMD <= admin log "CVMX: 2 content =metrics:GD"
CMD <= admin log "CVMX: 2 content =metrics:GC:accueil_ferme"
CMD <= admin log "CVMX: 2 content =metrics:AT:message"
CMD <= admin log "CVMX: 2 content =metrics:GF"
CMD <= admin log "CVMX: 2 content =metrics:GD"
CMD <= admin log "CVMX: 2 content =metrics:AM:vocal"
je dois recuperer les tags en gras avec leur valeur s'ils en ont
cela est faisable sans probleme, en java comme en php.
Je suppose que la ligne 2 contient une erreuril ne manquerais pas le mot clé metrics? ou netmetrics?CMD <= admin log "CVMX: 2 content =AT:0612222150"
Je te propose de récupérer le tag et la valeur si elle est presente.
Mais tous d'abord:
y as t il une erreur en ligne 2?
est ce que en ligne 1, on a bien le mot clé netmetrics et non pas metrics?
Y as t il d'autre mot clé?
oui ya une erreur
20061219_065111,444 1166507471439-7438 CMD <= admin log "CVMX: 2 content =netmetrics:GDEB"
20061219_065111,444 1166507471439-7438 CMD <= admin log "CVMX: 2 content =ATEL:0612222150"
20061219_065111,444 1166507471439-7438 CMD <= admin log "CVMX: 2 content =netmetrics:AAGC:0810635202"
20061219_065111,444 1166507471439-7438 CMD <= admin log "CVMX: 2 content =netmetrics:GDTS"
20061219_065111,444 1166507471439-7438 CMD <= admin log "CVMX: 2 content =netmetrics:GCES:accueil_ferme "
20061219_065111,444 1166507471439-7438 CMD <= admin log "CVMX: 2 content =netmetrics:ATES:message"
20061219_065111,444 1166507471439-7438 CMD <= admin log "CVMX: 2 content =netmetrics:GFTS"
20061219_065153,122 1166507471439-7438 CMD <= admin log "CVMX: 2 content =netmetrics:GDTU"
20061219_065153,122 1166507471439-7438 CMD <= admin log "CVMX: 2 content =netmetrics:AMSU:vocal"
voila un exemple complet mais ya d'autres tag de ce genre
ce nest juste qu'un exemple
Dernière modification par yoda1234 ; 15/05/2007 à 10h44.
je te propose un script java :
Celui ci fonctionne pour toutes les lignes sauf la deuxieme.
il n'est pas sensible au mot netmetrics (donc il peut y avoir n'importe lequel à la place)
Code:try { //le fichier de donnée d'entrée BufferedReader inputDataFile = new BufferedReader(new FileReader("data.txt")); //le fichier de sortie xml PrintWriter outputXmlFile = new PrintWriter(new BufferedWriter(new FileWriter("data.xml"))); //lecture d'une ligne du fichier de donnée (tant qu'il y en a) String line = ""; while( (line=inputDataFile.readLine()) != null ) { // line = CMD <= admin log "CVMX: 2 content =metrics:AM:vocal" System.out.println("ligne en cours de traitement : " + line); //on coupe la ligne en 2 : String [] sa = line.split(" ="); //sa[0] = "CMD <= admin log "CVMX: 2 content" //sa[1] = "metrics:AM:vocal"" //suppression du caractere " en fin de chaine sa[1] = sa[1].substring(0, sa[1].length()-1); String [] sb = sa[1].split(":"); //sb[0] : le mot cle (on s'en fiche) netmetrics //sb[1] : le nom du tag //sb[2] : la valeur du tag (optionnel) try { outputXmlFile.println("<tag name=\"" + sb[1] + "\" value=\"" + sb[2] + "\"/>"); } catch (Exception e) { outputXmlFile.println("<tag name=\"" + sb[1] + "\" value=\"" + "null" + "\"/>"); } } outputXmlFile.close(); inputDataFile.close(); } catch (Exception ex) { System.out.println(ex); }
Pour la ligne 2, il faut traiter le cas sb[0] different de "netmetrics" et enregistrer dans le fichier xml sb[0] et sb[1] au lieu de sb[1] et sb[2].
Bien sure, il reste à rajouter l'encapsulation des données xml
je te recmercie beaucoup je vais essayer
a+
Dernière modification par yoda1234 ; 15/05/2007 à 10h45.
Salut,
Pour la partie xml, tu as une foultitude de bibliothèque existante, du plus simple au plus compliqué, google + "java xml parser" et tu devrais trouver ton bonheur.
Bonjour ,
Pour la 2eme ligne j'ai essayé avec la condition if au cas il yaurai pas de netmetrics c vrai que il marche mais il decale les autres lignes et a la place des tags on a netmetrics et a la place des valeurson les tagsresultatsCode:/* * Ecrirefichier.java * * Created on 14 mai 2007, 09:39 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package my.contacteditor; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.io.FileReader; import java.lang.*; import java.util.StringTokenizer; import java.io.IOException; /** * * @author ybda8222 */ public class Ecrirefichier { /** Creates a new instance of Ecrirefichier */ Ecrirefichier(String nom) throws IOException { try { //le fichier de donnée d'entrée BufferedReader inputDataFile = new BufferedReader(new FileReader(nom)); //le fichier de sortie xml PrintWriter outputXmlFile = new PrintWriter(new BufferedWriter(new FileWriter("data.xml"))); //lecture d'une ligne du fichier de donnée (tant qu'il y en a) String line = ""; while( (line=inputDataFile.readLine()) != null ) { // line = CMD <= admin log "CVMX: 2 content =metrics:AM:vocal" System.out.println("ligne en cours de traitement : " + line); //on coupe la ligne en 2 : String [] sa = line.split(" ="); //sa[0] = "CMD <= admin log "CVMX: 2 content" //sa[1] = "metrics:AM:vocal"" //suppression du caractere " en fin de chaine sa[1] = sa[1].substring(0, sa[1].length()-1); String [] sb = sa[1].split(":"); //sb[0] : le mot cle (on s'en fiche) netmetrics //sb[1] : le nom du tag //sb[2] : la valeur du tag (optionnel) // System.out.println("la ligne" + sb[0]); if(sb[0]!="netmetric") { try { outputXmlFile.println("<tag name=\"" + sb[0] + "\" value=\"" + sb[1] + "\"/>"); } catch (Exception e) { outputXmlFile.println("<tag name=\"" + sb[0] + "\" value=\"" + "null" + "\"/>") ; } } else { try { outputXmlFile.println("<tag name=\"" + sb[0] + "\" value=\"" + sb[1] + "\"/>"); } catch (Exception e) { outputXmlFile.println("<tag name=\"" + sb[0] + "\" value=\"" + "null" + "\"/>") ; } } } outputXmlFile.close(); inputDataFile.close(); } catch (Exception ex) { System.out.println(ex); } } public static void main(String [] args) throws IOException { Ecrirefichier bab =new Ecrirefichier(args[0]); } }
Code:<tag name="netmetrics" value="GDEB"/> <tag name="ATEL" value="0612222150"/> <tag name="netmetrics" value="AAGC"/> <tag name="netmetrics" value="GDTS"/> <tag name="netmetrics" value="GCES"/> <tag name="netmetrics" value="ATES"/>
Bonjour ,
Pour la 2eme ligne j'ai essayé avec la condition if au cas il yaurai pas de netmetrics c vrai que il marche mais il decale les autres lignes et a la place des tags on a netmetrics et a la place des valeurson les tagsresultatsCode:/* * Ecrirefichier.java * * Created on 14 mai 2007, 09:39 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package my.contacteditor; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.io.FileReader; import java.lang.*; import java.util.StringTokenizer; import java.io.IOException; /** * * @author ybda8222 */ public class Ecrirefichier { /** Creates a new instance of Ecrirefichier */ Ecrirefichier(String nom) throws IOException { try { //le fichier de donnée d'entrée BufferedReader inputDataFile = new BufferedReader(new FileReader(nom)); //le fichier de sortie xml PrintWriter outputXmlFile = new PrintWriter(new BufferedWriter(new FileWriter("data.xml"))); //lecture d'une ligne du fichier de donnée (tant qu'il y en a) String line = ""; while( (line=inputDataFile.readLine()) != null ) { // line = CMD <= admin log "CVMX: 2 content =metrics:AM:vocal" System.out.println("ligne en cours de traitement : " + line); //on coupe la ligne en 2 : String [] sa = line.split(" ="); //sa[0] = "CMD <= admin log "CVMX: 2 content" //sa[1] = "metrics:AM:vocal"" //suppression du caractere " en fin de chaine sa[1] = sa[1].substring(0, sa[1].length()-1); String [] sb = sa[1].split(":"); //sb[0] : le mot cle (on s'en fiche) netmetrics //sb[1] : le nom du tag //sb[2] : la valeur du tag (optionnel) // System.out.println("la ligne" + sb[0]); if(sb[0]!="netmetric") { try { outputXmlFile.println("<tag name=\"" + sb[0] + "\" value=\"" + sb[1] + "\"/>"); } catch (Exception e) { outputXmlFile.println("<tag name=\"" + sb[0] + "\" value=\"" + "null" + "\"/>") ; } } else { try { outputXmlFile.println("<tag name=\"" + sb[0] + "\" value=\"" + sb[1] + "\"/>"); } catch (Exception e) { outputXmlFile.println("<tag name=\"" + sb[0] + "\" value=\"" + "null" + "\"/>") ; } } } outputXmlFile.close(); inputDataFile.close(); } catch (Exception ex) { System.out.println(ex); } } public static void main(String [] args) throws IOException { Ecrirefichier bab =new Ecrirefichier(args[0]); } }Code:<tag name="netmetrics" value="GDEB"/> <tag name="ATEL" value="0612222150"/> <tag name="netmetrics" value="AAGC"/> <tag name="netmetrics" value="GDTS"/> <tag name="netmetrics" value="GCES"/> <tag name="netmetrics" value="ATES"/>
Dernière modification par yoda1234 ; 15/05/2007 à 10h47.
c'est normal : dans ton else il faut changer les indicesmais il decale les autres lignes et a la place des tags on a netmetrics et a la place des valeurson les tags
de plus, il y a une faute d'hortographe à netmetrics : ca prend un sCode:else { try { outputXmlFile.println("<tag name=\"" + sb[1] + "\" value=\"" + sb[2] + "\"/>"); } catch (Exception e) { outputXmlFile.println("<tag name=\"" + sb[1] + "\" value=\"" + "null" + "\"/>") ; } }
du coup tu tombais tous le temps dans le if(sb[0]!="netmetric") qui ne fonctionne pas en java
il faut utiliser String.equals(" ");
ou String.compare(" ");
voici le if / else
Tu remarqueras que j'ai intervertie le traitement de if et de else pour plus de comprehension et que j'ai rajouté le mot clé metricsCode:if( sb[0].equals("netmetrics") || sb[0].equals("metrics") ){ try { outputXmlFile.println("<tag name=\"" + sb[1] + "\" value=\"" + sb[2] + "\"/>"); } catch (Exception e) { outputXmlFile.println("<tag name=\"" + sb[1] + "\" value=\"" + "null" + "\"/>") ; } } else { try { outputXmlFile.println("<tag name=\"" + sb[0] + "\" value=\"" + sb[1] + "\"/>"); } catch (Exception e) { outputXmlFile.println("<tag name=\"" + sb[0] + "\" value=\"" + "null" + "\"/>") ; } }
ps : j'ai testé le code et cela fonctionne
Ben mon gars je te remercie beaucoup .je vais le modifier
Dernière modification par yoda1234 ; 15/05/2007 à 10h46.
Bonjour,
tu n'as pas besoin d'utiliser systématiquement le bouton "citer" pour répondre aux messages: tu alourdis inutilement la lecture du fil, tu peux utiliser le bouton "répondre" .
Là où l'ignorance est un bienfait, c'est de la folie d'être sage (Thomas Gray).