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 :

Mettre une dtd


Sujet :

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

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 347
    Par défaut Mettre une dtd
    Bonjour voilà j'ai un problème avec SAX !
    J'ai un fichier config.xml que j'aimerais parser et une dtd (celle ci se trouve dans mon jar).
    Or je n'arrive pas à indiqué à SAX ma dtd, donc il fait n'importe quoi et j'arrive à rien..(c'est ma premiere avec SAX à préciser)

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class XMLParser extends DefaultHandler
    {
       public void parseFile(InputStream fichier)
       {
          SAXParserFactory spf = SAXParserFactory.newInstance();
          spf.setValidating(true);
          spf.setNamespaceAware(false);
     
          SAXParser saxParser;
          try
          {
             saxParser = spf.newSAXParser();
             saxParser.parse(fichier, this);
    ...

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    La dtd devrait être référencée par ton fichier...
    Je me souviens d'une API qui permet d'intercaler une dtd dans un fichier xml avant parsing (couche intermédiaire dans les buffer de lecture) mais je ne me souviens plus du nom :-(

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 347
    Par défaut
    Exact, tu as raison je n'avais pas référencé la dtd dans le fichier xml.
    Mais gros souci !!!!
    Ma dtd est dans le jar et donc il me met qu'il ne trouve pas le fichier.
    et je ne peux quand meme pas mettre <!DOCTYPE "appli.jar!/ressources/exemple.dtd" > !
    Comment puis je faire alors ?

  4. #4
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Déjà la première question c'est est-ce que ça marche si tu mets ça comme chemin de dtd ?

    Si oui, j'en reviens à ce que je disais. Pas très propre du tout c'est clair d'avoir ça comme chemin dans le xml, donc à voir pour rajouter ça avant parsing ...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    347
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 347
    Par défaut
    J'ai tester avec un chemin en dur tel que c:/exemple.dtd et celà fonctionne !Mais ce n'est pas une solution satisfesante pour moi.

    J'ai trouvé une piste en fesant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
       protected static class DtdResolver implements EntityResolver
       {
          public InputSource resolveEntity (String publicId, String systemId)
          {
             if (systemId.endsWith(".dtd"))
             {
                return new InputSource(ClassLoader.getSystemResourceAsStream("resources/exemple.dtd"));
             }
             return null;
          }
       }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
             DocumentBuilder documentBuilder=dbf.newDocumentBuilder();
             documentBuilder.setEntityResolver(new DtdResolver());
    Mais celà ne fonctionne pas !

  6. #6
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Et ça ne te donne aucune erreur ?

Discussions similaires

  1. [Drag & Drop] Mettre une fiche dans un panel
    Par corwin_d_ambre dans le forum Composants VCL
    Réponses: 5
    Dernier message: 12/01/2004, 10h46
  2. [XML][DTD] Creer un parser à partir d'une DTD
    Par schnekre dans le forum Valider
    Réponses: 4
    Dernier message: 15/12/2003, 12h59
  3. Réponses: 2
    Dernier message: 08/08/2003, 17h30
  4. Peut on mettre une image dans une BD MySQL ?
    Par maddog2032 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 25/07/2003, 16h18
  5. Faire respecter une DTD !!!
    Par haypo dans le forum Valider
    Réponses: 3
    Dernier message: 12/07/2003, 19h20

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