Tansformer 3 fichiers txt en 1 seul fichier xml

kalil45
Messages postés
5
Date d'inscription
jeudi 26 septembre 2013
Statut
Membre
Dernière intervention
15 juin 2014
- Modifié par KX le 15/06/2014 à 23:10
KX
Messages postés
16585
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 août 2022
- 15 juin 2014 à 23:46
Bonjour,
je suis debutant dans la programmation, ma tache est de fair un classe java le code ci dessous pour tansformer 3 fichiers txt en 1 seul fichier xml
j'ai l'erreur ci dessous.

L'erreur:
java.lang.ExceptionInInitializerError
Caused by: java.util.MissingResourceException: Can't find bundle for base name Parametrage, locale fr_FR
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1427)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1250)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:777)
at fr.followthecode.fileparser.FileParserV15.<clinit>(FileParserV15.java:22)
Exception in thread "main" ci dessous


mon code:

package fr.followthecode.fileparser;

/**  * @author Gary  *  * * programmation et logiciels libres  */
import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class FileParserV15 {
 /** * @param args * @throws IOException */

 static Locale locale = new Locale("fr", "FR");
 private static final ResourceBundle rbConfigFichier = ResourceBundle.getBundle("Parametrage", locale);

 public static void main(String[] args) throws IOException {
  // la condition avec la quelle on dois parser le text
  Pattern pattern = Pattern.compile("[a-zA-Z-]+[A-Z ]+ |[0-9]+|[0-9]+|[0-9]");
  Pattern pattern1 = Pattern.compile("[a-zA-Z-]+[A-Z ]+ |[0-9]+|[0-9]+|[0-9]+|[a-zA-Z0-9]+|[a-zA-Z][***]");

  // le fichier de sortie en xml
  // String fichierXML =
  // "C:/User/U223481/Documents/tablette/fichierXML.xml";
  String fichierXML = rbConfigFichier.getString("fichierXML");

  // le fichier d'entrée pour la france
  // File fileFrance = new
  // File("C:/User/U223481/Documents/tablette/DIALOGFR.TXT");
  // File fileFrance = (File) rbConfigFichier.getObject("fileFrance");
  String fileFrance = rbConfigFichier.getString("fileFrance");
  File FichierFrance = new File(fileFrance);

  // le fichier d'entrée pour l'Europe
  // File fileEurope = new
  // File("C:/User/U223481/Documents/tablette/DIALOGEXP.TXT");
  // File fileEurope = (File) rbConfigFichier.getObject("fileEurope");
  String fileEurope = rbConfigFichier.getString("fileEurope");
  File fichierEurope = new File(fileEurope);

  // le fichier qui indique les objectifs et les zonnes des pays pour
  // l'eruope
  // File fileObjectifEu = new
  // File("C:/User/U223481/Documents/tablette/Conf_Europe.TXT");
  // File fileObjectifEu = (File)
  // rbConfigFichier.getObject("fileObjectifEu");
  String fileObjectifEu = rbConfigFichier.getString("fileObjectifEu");
  File FichierOjectif = new File(fileObjectifEu);
  /**
   * fileContentFrance: fichier contenant les information concernant la
   * france fileContentEurope: fichier contenant les information
   * concernant l'Europe fileContentObjectifEu: fichier contenant les
   * information concernant les objectifs les Zones et les groupes
   * 
   */

  String fileContentFrance = readFileAsString(FichierFrance.getAbsolutePath());
  String fileContentEurope = readFileAsString(fichierEurope.getAbsolutePath());
  String fileContentObjectifEu = readFileAsString(FichierOjectif.getAbsolutePath());
  // String fileContentFrance =
  // readFileAsString(fileFrance.getAbsolutePath());
  // String fileContentEurope =
  // readFileAsString(fileEurope.getAbsolutePath());
  // String fileContentObjectifEu =
  // readFileAsString(fileObjectifEu.getAbsolutePath());

  // fichier en écriture en XML
  FileWriter fw = new FileWriter(fichierXML);
  BufferedWriter bw = new BufferedWriter(fw);
  PrintWriter fichierSortie = new PrintWriter(bw);

  /**
   * déclaration de la liste pour mettre les valeurs lu du fichier
   * concernne. v1ListFr: pour la france v2ListEu: pour l'Europe v4ConfEu:
   * pour les objectifs, zone...
   * 
   */

  ArrayList<Object> v1ListFr = new ArrayList<Object>();
  ArrayList<Object> v2ListEu = new ArrayList<Object>();
  ArrayList<Object> v4ConfEu = new ArrayList<Object>();

  /**
   * on utilse le parsage pour chaque fichier selon le besoin matche: pour
   * le fichier france match2 pour le fichier Europe match4 pour le
   * fichier où on trouve les objectifs, Zone..
   */
  Matcher match = pattern.matcher(fileContentFrance);
  Matcher match2 = pattern.matcher(fileContentEurope);
  Matcher match4 = pattern1.matcher(fileContentObjectifEu);

  /**
   * matchList est une méthode pour remplir les listes
   */
  matchList(match, v1ListFr);
  matchList(match2, v2ListEu);
  matchList(match4, v4ConfEu);

  /**
   * parcourir une liste à l'aide d'un Iterator pour recuppere la date est
   * supprimer les premiers éléments
   */

  Iterator iteratorFr = v1ListFr.iterator();
  for (int i = 0; i < 9; i++) {

   if (v1ListFr.contains("STATISTIQUES ") & i == 0) {

    fichierSortie.println("<?xml version=1.0?>");
    fichierSortie.println("<root DateStart=''" + v1ListFr.get(i + 2) + "''" + "DateStop=''" + v1ListFr.get(i + 2) + "''"
      + " DateLastUpdate=''" + v1ListFr.get(i + 4) + "''" + ">");
   }
   if (iteratorFr.hasNext()) {

    iteratorFr.next();
    iteratorFr.remove();
   }
  }

  Iterator iteratorEu = v2ListEu.iterator();
  for (int i = 0; i < 9; i++) {
   if (iteratorEu.hasNext()) {

    iteratorEu.next();
    iteratorEu.remove();
   }
  }

  Iterator iteratorConf = v4ConfEu.iterator();
  for (int i = 0; i < 11; i++) {
   if (iteratorConf.hasNext()) {

    iteratorConf.next();
    iteratorConf.remove();
   }
  }

  /*
   * fusionner les deux listes france et europe dans une seule liste en
   * mettant les valeurs de liste Europe dans la liste France
   */
  v1ListFr.addAll(v2ListEu);

  for (int k = 0; k < v1ListFr.size(); k++) {

   fichierSortie.println("<fillale>");

   /**
    * la methode trim() c'est pour enlever l'espace à la fin de la
    * chaine
    */

   String ValEsp = ((String) v1ListFr.get(k)).trim();
   fichierSortie.println(" <nom>" + ValEsp + "</nom>");
   if (ValEsp.contains("AC ")) {
    fichierSortie.println(" <marque>Citroen</marque>");
   } else {
    fichierSortie.println(" <marque>Peugeot</marque>");
   }

   for (int i = 0; i < v4ConfEu.size(); i++) {

    if (v4ConfEu.get(i).equals(v1ListFr.get(k))) {

     // CMDCLTS
     fichierSortie.println("  <cmdclts>");
     fichierSortie.println("   <nb>" + v1ListFr.get(k + 1) + "</nb>");
     fichierSortie.println("   <objectif>" + v4ConfEu.get(i + 1) + "</objectif>");
     fichierSortie.println("   <tendance>" + v4ConfEu.get(i + 1).hashCode() / (v1ListFr.get(k + 1)).hashCode() + "</tendance>");
     fichierSortie.println("  </cmdclts>");

     // VENTES
     fichierSortie.println("  <ventes>");
     fichierSortie.println("   <nb>" + v1ListFr.get(k + 2) + "</nb>");
     fichierSortie.println("   <objectif>" + v4ConfEu.get(i + 2) + "</objectif>");
     fichierSortie.println("   <tendance>" + v4ConfEu.get(i + 2).hashCode() / (v1ListFr.get(k + 2)).hashCode() + "</tendance>");
     fichierSortie.println("  </ventes>");

     // Factures
     fichierSortie.println("  <factures>");
     fichierSortie.println("   <nb>" + v1ListFr.get(k + 3) + "</nb>");
     fichierSortie.println("   <objectif>" + v4ConfEu.get(i + 3) + "</objectif>");
     fichierSortie.println("   <tendance>" + v4ConfEu.get(i + 3).hashCode() / (v1ListFr.get(k + 3)).hashCode() + "</tendance>");
     fichierSortie.println("  </factures>");

     // GROUPES
     fichierSortie.println("  <groupes>");
     fichierSortie.println("   <groupe>" + v4ConfEu.get(i + 4) + "</groupe>");
     fichierSortie.println("  </groupes>");

     // ZONE
     fichierSortie.println("  <zone>");
     fichierSortie.println("   <zone>" + v4ConfEu.get(i + 5) + "</zone>");
     fichierSortie.println("  </zone>");

    }

   }
   fichierSortie.println("</fillale>");
   k = k + 3;

  }
  fichierSortie.println("</Root>");
  fichierSortie.close();
 }

 // private static void println(String string) {
 // TODO Auto-generated method stub

 // }

 // private static void If(Object object) {
 // TODO Auto-generated method stub

 // }

 /**
  * matchList est une methode pour remplir la liste ArrayList
  */

 private static void matchList(Matcher matcher, ArrayList<Object> maListe) {

  while (matcher.find()) {
   maListe.add(matcher.group().toString());
  }
 }

 /**
  * readFileAsString est une methode pour lire les fichiers txt.
  */
 private static String readFileAsString(String filePath) throws java.io.IOException {
  byte[] buffer = new byte[(int) new File(filePath).length()];
  BufferedInputStream f = null;
  try {
   f = new BufferedInputStream(new FileInputStream(filePath));
   f.read(buffer);
  } finally {
   if (f != null)
    try {
     f.close();
    } catch (IOException ignored) {
    }
  }
  return new String(buffer);
 }
}

2 réponses

Whismeril
Messages postés
17686
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
17 août 2022
613
15 juin 2014 à 23:07
Bonjour, message modifié par l'ajout des balises de code.
Voir ici comment utiliser la coloration syntaxique.

0
KX
Messages postés
16585
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 août 2022
124
15 juin 2014 à 23:46
Bonsoir,

Ton programme plante avant d'entrer dans le main car il ne trouve pas le fichier
Parametrage_fr_FR.properties
, celui-ci doit être placé dans le classpath de l'application, par défaut c'est le répertoire le plus haut de ta hiérarchie de classe, c'est à dire celui qui contient le package "fr" ici.
0