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 :

Fichier relatif... [SAX]


Sujet :

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

  1. #1
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut Fichier relatif...
    Bonjours,

    Je voudrais soumettre un petit problème à votre sagacité.

    J'ai des fichiers XML à lire (la lecture se fait avec SAX) et j'aimerai pouvoir lire le fichier en utilisant un nom relatif...

    Je m'explique, commer pour lire un fichier XML il faut ouvrir un flux, il faut donc le chemin absolu vers le fichier XML.

    Je ne voudrai pas avoir de fichier de propriétés dans lequels seraient définis la racine pour la lecture du fichier (sachant qu'il faudrait modifier le fichier et l'adapter pour divers environnements)...

    Y a-t-il un moyen de mettre le fichier dans un répertoire particulier de Websphere pour qu'il soit directement accessible... (genre lib/).

    Sinon y a-t-il une ruse pour pouvoir effectuer un tel opération ?

    Merci de toutes vos suggestions ? Merci de me transmettre vos expériences en la matière ...

  2. #2
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Pour faire ce genre de chose je m'arrange pour mettre le repertoire contenant les fichiers XML dans le classpath et j'utilise getResourceAsStream pour le recuperer ..

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  3. #3
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Tu peux me donner un 'tit exemple ... Merci

  4. #4
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Je vais prendre en exemple une des applis de mon projet actuel ...

    Cette appli doit acceder a differents fichiers de confs, fichiers qui ne sont pas dans le meme repertoire suivant que l'appli est testee en local ou deployer sur un environnement de production..

    Les fichiers de proprietes sont regroupes dans un repertoire conf qui lui appartient au classpath:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    export CLASSPATH=${CLASSPATH}:/home/user/monAppli/conf
    Dans mon code pour acceder au fichiers de conf je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    InputStream is = getClass().getResourceAsStream("/monFichier.properties");
    Si l'inputStream est pas null cela signifie que mon fichier est trouve et je peut le loader dans un objet Properties..

    Dans ton cas c'est la meme chose, tu peux parser ton fichier en creant un InputSource a partir de l'InputStream..

    Par contre si tu utilises une DTD pour valider tes fichiers, il serait pas mal d'ecrire une methode resolveEntity base sur le meme principe afin de pouvoir s'en sortir (dans mon projet on colle les DTD dans le jar de l'appli et on y accede de la meme facon getResourceAsStream)

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  5. #5
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Est-ce que ça va fonctionner avec des fichiers XML ???

  6. #6
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Tu as dit que la lecture se faisait avec SAX, n'est ce pas :
    Dans ce cas tu peux passer l'inputstream directement en argument de la methode parse avec ton DefaultHandler ...

    Si tu as une DTD pour valider tes documents, pense a redefinir la methode resolveEntity de ton handler et a faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    parser.getXMLReader.setEntityResolver(tonHandler);
    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  7. #7
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    C'est ce que je veux dire, mais je sais qu'un fichier properties peut être localisé grâce au classpath mais en est-il de même pour un fichier XML. Parceque quand tu utilises un ResourceBundle il recherche le bundle via le classpath par exemple, mais en est-il de même pour un fichier XML ???

  8. #8
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    La methode getResourceAsStream cherche une resource, n'importe laquelle que ton fichier soit un .xml, un .class, une image j'en passe et des meilleurs, ca marche

    Le resourceBundle est un cas particulier (qui en interne utilise probablement getResourceAsStream) puisqu'il cherche un fichier de propriete au sens java du terme pour s'initialiser avec ...

    Tu peux y aller les yeux fermes, j'ai fait ca je ne sais pas combien de fois et ca marche sans probleme ...

    Et n'oublie pas le resolveEntity (et le Résolu si tu veux ), car si tes fichiers XML ont des ref externes elles seront cherchees au mauvais endroit ..

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  9. #9
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Citation Envoyé par bulbo
    Tu as dit que la lecture se faisait avec SAX, n'est ce pas :
    Dans ce cas tu peux passer l'inputstream directement en argument de la methode parse avec ton DefaultHandler ...

    Si tu as une DTD pour valider tes documents, pense a redefinir la methode resolveEntity de ton handler et a faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    parser.getXMLReader.setEntityResolver(tonHandler);
    Bulbo
    Juste une question, à quoi correspond parser c'est la class étendant DefaultHandler???

  10. #10
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Non parser c'est le SAXParser retourne par la classe SAXParserFactory avec la methode newSAXParser..

    Si tu veux un exemple d'init pour un parser SAX, j'en ai poste un il y a peu sur le forum (topic)

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

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

Discussions similaires

  1. chemin des fichiers relatif au webroot
    Par john_wili dans le forum Tomcat et TomEE
    Réponses: 10
    Dernier message: 09/01/2009, 15h28
  2. Réponses: 10
    Dernier message: 13/03/2008, 16h34
  3. Réponses: 8
    Dernier message: 22/01/2008, 21h28
  4. XSLT: nom de fichiers relatifs
    Par Ymer dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 21/06/2004, 12h47

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