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 :

Erreur avec SAXBuilder [SAX]


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2010
    Messages : 8
    Par défaut Erreur avec SAXBuilder
    Bonjour,

    Mon programme lit d'abord son fichier de configuration xml depuis le code suivant, d'une classe statique dont les variables sont privées:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            SAXBuilder builder = new SAXBuilder(false);
            builder.setReuseParser(false);
            try 
            {
                doc = builder.build(new File(nomFich));
                racine = doc.getRootElement();  
                ...
    tout ça fonctionne parfaitement!

    L'utilisateur choisit ensuite le projet sur lequel il veut travailler et le programme lit alors le fichier de configuration XML du projet, dans un dossier tout à fait différent (celui du projet). (La classe est statique et les variables privées)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            SAXBuilder builder = new SAXBuilder(false);
            builder.setReuseParser(false);
            try 
            {
                doc = builder.build(new File(nomFich));  <-- ERREUR
                ... 
             }  //try
            catch (Exception exc)
            {
                System.out.println("Erreur en lisant le fichier\n" + nomFich
                        + "\n" + exc.getMessage());
    La ligne indiquée génère l'erreur suivante:
    Erreur en lisant le fichier
    C\:\\Documents and Settings\\AlainP\\Mes documents\\Temp\\main\main.xml
    C:\Documents and Settings\AlainP\Mes documents\Info\Java\ZonesImages\C\:\Documents and Settings\AlainP\Mes documents\Temp\main\main.xml (Syntaxe du nom de fichier, de répertoire ou de volume incorrecte)
    La 2e ligne démontre que le nom du fichier est correct.
    MAIS (3e ligne et suivantes, le message d'erreur) SAXBuilder a ajouté ce chemin au chemin du premier fichier XML qu'il a lu (la configuration du programme).

    Question(s):
    Peut-on lire des fichiers XML dans des dossiers différents?
    Comment peut-on «réinitialiser» SAXBuilder (J'ai cru que «builder.setReuseParser(false);» aurait pu... mais que non!

    Merci de votre aide.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par epiph Voir le message
    La 2e ligne démontre que le nom du fichier est correct.
    La deuxième ligne démontre que le nom de fichier est complètement invalide.
    Qu'est-ce que c'est que ce C\:\\ ? Windows n'y pige rien, et Java a l'air de faire n'importe quoi avec.

    Citation Envoyé par epiph Voir le message
    SAXBuilder a ajouté ce chemin au chemin du premier fichier XML qu'il a lu (la configuration du programme).
    Ce n'est pas SAXBuilder et ce n'est pas le premier fichier qu'il a lu.

    C'est File.getAbsolutePath(), de Java, qui fait n'importe quoi avec cette syntaxe invalide. SAXBuilder appelle File.getAbsolutePath() parce que les APIs Java ne chargent les ressources que par URI, et qu'il faut donc transformer un File en URI en passant par là.

    Le répertoire "inventé" n'est pas le répertoire du précédent fichier lu, mais le "répertoire courant" de ton application.

    Peut-on lire des fichiers XML dans des dossiers différents?
    Oui.

    Comment peut-on «réinitialiser» SAXBuilder (J'ai cru que «builder.setReuseParser(false);» aurait pu... mais que non!
    C'est bien ça. Ceci étant dit, si deux SAXBuilder ont chacun été construit avec l'opérateur new, ils sont déjà complètement décorrélés l'un de l'autre.

    Conclusion : Rien à voir avec SAXBuilder ou JDOM, tout à voir avec C\:\\
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2010
    Messages : 8
    Par défaut [Résolu] Erreur avec SAXBuilder
    Bonjour thelvin, merci de ta réponse.

    Tu as tout à fait raison.

    Qu'est-ce que c'est que ce C\:\\ ? Windows n'y pige rien, et Java a l'air de faire n'importe quoi avec.
    Le chemin a été trouvé par l'Explorateur Windows et a été sauvegardé sans autre intervention (i.e. sans modification) de ma part. C'est Java qui aura ajouté les double-\, comme caractères d'échappement...

    Une fois la correction faite (suppression des double-\) dans le fichier XML du programme, SAXBuilder lit le fichier XML du projet sans difficulté.

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Ouais, euh tu utilises bien un Objet file pour l'obtenir cette adresse, non?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur Avec Interbase
    Par smokemon dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/10/2004, 07h24
  2. Erreur avec procédure LockWorkStation ...
    Par simonseztech dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/08/2004, 15h33
  3. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45
  4. Erreur avec les ADO
    Par megane dans le forum Bases de données
    Réponses: 7
    Dernier message: 08/03/2004, 21h37
  5. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 00h25

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