IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

Génération d'un fichier de config XML


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut Génération d'un fichier de config XML
    Bonjour, ma question est simple
    J'utilise un bon vieu JFileChooser pour demander à l'utilisateur l'emplacement du fichier .exe d'un lecteur multimedia, hors il est inconçevable de faire la même manipulation à chaque lancement du programme...
    Je souhaite donc savoir comment créer ou générer un fichier xml qui enregistre l'emplacement du fichier .exe choisit auparavant par l'utilisateur et le reli au prochain lancement que le programme soit opérationel.
    Merci beaucoup

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Tu sais que l'API Preferences permet de sauvegarder les preferences de l'utilisateur entre chaque session.

    Quand a ecrire un fichier XML c'est aussi simple que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    String encoding = "utf-8";
    PrintWriter out = new PrintWriter(filename, encoding);
    try {
      out.printf("<?xml version=\"1.0\" encoding=\"%s\"?>", encoding).println();
      [...]
    }
    finally {
      out.close();
    }
    Quant a la lecture :

    SAX: http://www.exampledepot.com/egs/java.../BasicSax.html
    DOM: http://www.exampledepot.com/egs/java.../BasicDom.html
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Merci bien, cependant, pour généré un fichier XML avec la fonction qui stock l'emplacement d'un fichier .exe, je ne sais par ou commencer !
    Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myExecFile.getAbsolutePath()
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre éclairé Avatar de clubist
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Par défaut JAXB
    Bonjour,

    Vous pouvez aussi utiliser l'API JAVA JAXB pour faire le mapping XML-JAVA

    mais vous veuillez avant créer le schéma xsd de votre future fichier XML et avec JAXB vous pouvez générer des classes correspondantes aux éléments de ce xsd et pour :
    - "unmarshal" pour rassembler le contenu XML dans une présentation JAVA
    - "marshal" pour passer des classes java aux contenu XML donc il permet de créer des fichiers XML valide au shéma XSD.

  6. #6
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Merci pour vos réponses, je vous tient au courant si je trouve mon bonheur

  7. #7
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    J'ai trouver une explication, mais j'ai une erreur ( soulignage rouge )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    			private JFileChooser			 chooser     	     = new JFileChooser();
    			private FileNameExtensionFilter  filter 			 = new FileNameExtensionFilter("Fichiers Exécutables", "exe");
    			private DocumentBuilderFactory   fabrique			 = new DocumentBuilderFactory.newInstance(); // le DocumentBuilderFactory.newInstance(); est souligné en rouge :s
    			private DocumentBuilder          constructeur        = fabrique.newDocumentBuilder();
    			private Document                 document			 = constructeur.newDocument();
     
     
     
     
    bouton save 
    		if(this.chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
    			{
    				Element root = document.createElement("root");
    				document.appendChild(root);
    				OutputFormat format = new OutputFormat(document, "UTF-8", true);
    				document.setXmlVersion("1.0");
    				XMLSerializer output = new XMLSerializer(new FileOutputStream(chooser.getSelectedFile().getPath()), format);
    				output.serialize(document);
    				output.endDocument();
    				this.textChemin.setText(this.chooser.getSelectedFile().getAbsolutePath());
    			}
    Est-ce que j'ai placé la méthode au bon endroit ?
    ps : J'ai mi que la partie du code concernée, dites moi si je dois mettre l'intégralité
    ps 2 : Eclipse me dit, " Cannot instantiate the type DocumentBuilderFactory"...
    Problème de compatibilitée JDK ?
    Merci

  8. #8
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Bonjour, en fait jai compris qu'il ne fallait pas mettre de "new" a la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private DocumentBuilderFactory   fabrique			 = new DocumentBuilderFactory.newInstance();
    mais comment bien instancier un DocumentBuilder ?!

    Merci pour la doc Bouye

  9. #9
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Désolé pour le double post, mais j'ai compri la synthaxe maintenant, cependant, dans le cas de création d'un fichier Xml (ou on stockerai l'emplacement d'un fichier executable ) , est-il plus judicieux de créer un Xml ( ou SAX ) ou un Dom , je ne vois pas la différence entre les deux.
    Merci

  10. #10
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    DOM charge tout le document en mémoire donc ca prend plus de place et peut rendre difficile la manipulation de TRES gros fichiers XML (OutOfMemoryError, etc. Mais ça ne devrait pas être ton cas). Mais tout charger en mémoire ca permet aussi de faire plusieurs passe sur le document et de le manipuler comme on veut.

    SAX ne fait qu'une seule passe sur le document et fonctionne sur un principe événementiel, on est averti quand on ouvre un tag, ferme un tag etc. et tu dois réagir en concéquence. C'est donc plus léger mais en même temps ça peut être plus pénible à manipuler.

    Perso je fais plus souvent avec DOM mais c'est surtout car ça correspond à mes besoins.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  11. #11
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Tres bien, merci Bouye,
    Etant donné que je dois juste enregistrer, environ 10 à 15 variables ou lignes, ( un emplacement de fichier + une dizaine d'URL ), donc je pense plutôt utiliser SAX vu que le fichier .xml ne sera pas "TRES LOURD" comme tu me la dis.
    Une dernière chose, si j'ai bien compris je dois utiliser SAXParserFactory pour analyser le fichier XML ? Et pour le créer, DocumentBuilder ?
    Merci

  12. #12
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Pour le créer un simple PrintWriter est suffisant du moment que tu respectes la syntaxe et ferme correctement tes balises.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  13. #13
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Merci bouye, j'ai mi trop de temps a éditer mon post tu a répondu avant..
    j'ai trouvé une solution, je le post apres le tien..

  14. #14
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Essaie plutot un truc comme ça (pour le close() je veux dire):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    XMLEncoder e;
    try {
        e = new XMLEncoder(new BufferedOutputStream (new FileOutputStream("config.xml")));
        try {
            e.get(textChemin); // textChemin est la variable ou je stock l'emplacement du fichier executable
            e.writeObject(itemXML);
        } finally {
            e.close();
        }
    } catch (FileNotFoundException e1) {
        e1.printStackTrace();
    }
    Sinon, euh du XML c'est du texte chez moi...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    String encoding = "utf-8";
    String filename = "toto.xml";
    PrintWriter out = new PrintWriter(filename, encoding);
    try {
      out.printf("<?xml version=\"1.0\" encoding=\"%s\"?>", encoding).println();
      out.printf("<WHATEVER path=\"%s\"/>", myExecFile.getAbsolutePath());
    }
    finally {
      out.close();
    }
    Et voilà, c'est magique, un fichier XML !
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  15. #15
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Merci bouye, j'ai essayé le PrintWriter, mais cela ne sort que du fichier txt ( j'entend par la un fichier texte tout bete) , alors que j'ai essayé XMLEncoder, et la j'ai un fichier xml directe. Donc je garde le XMLEncoder.

    J'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    XMLEncoder e;
    try {
    e = new XMLEncoder( 
    new BufferedOutputStream (
    new FileOutputStream("config.xml")));
    e.writeObject(textChemin);    // textChemin est la variable ou je stock l'emplacement du fichier executable.
     
     
    e.close();
    } catch (FileNotFoundException e1) {
    e1.printStackTrace();
    }
    }

    Je récupere donc ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8" ?>
    <java version="1.6.0_18" class="java.beans.XMLDecoder">
    <object classe="javax.swing.JTextField">
    <void property="columns">
    <int>60</int>
    </void>
    <void property="text">
    <string>C:\Users\pendora\Documents\VideoLan\vlc.exe</string>
    </void>
    </object>
    </java>
    D'ou la question, comment récupérer la ligne <string> ? pour ne pas à avoir a reconfigurer son emplacement de lecteur multimédia...

    Merci

  16. #16
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    J'ai repris ta modification avec le finally {
    e.close(); } mais il me souligne rouge le catch maintenant ... :s

  17. #17
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Citation Envoyé par pendoRa Voir le message
    J'ai repris ta modification avec le finally { e.close(); } mais il me souligne rouge le catch maintenant ... :s
    Tu as bien mis la clause finally après la clause catch ?

  18. #18
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    C'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try {
      [...]
    }
    finally {
      [...]
    }
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try {
      [...]
    }
    catch (...) {
      [...]
    }
    finally {
      [...]
    }
    mais pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try {
      [...]
    }
    finally {
      [...]
    }
    catch (...) {
      [...]
    }
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  19. #19
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Oui c'est bon, désolé étourderie
    merci.
    Maintenant,
    comment récupérer la ligne <string> ? pour ne pas à avoir a reconfigurer son emplacement de lecteur multimédia...
    XMLReader ?

Discussions similaires

  1. fichier de config XML à ajouter au JAR
    Par Balbuzard dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 03/12/2008, 22h05
  2. erreur dans le fichier struts-config.xml
    Par j_esti dans le forum Struts 1
    Réponses: 4
    Dernier message: 16/05/2008, 13h26
  3. prob fichier struts-config.xml
    Par catherine* dans le forum Struts 1
    Réponses: 8
    Dernier message: 17/09/2007, 15h58
  4. [Struts-menu] déplacer le fichier menu-config.xml
    Par mkc44 dans le forum Struts 1
    Réponses: 2
    Dernier message: 25/05/2007, 14h21
  5. Je ne trouve pas le fichier Struts-Config.xml
    Par masse dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 06/10/2006, 10h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo