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 :

Lecture d'une DTD [DTD]


Sujet :

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

  1. #1
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut Lecture d'une DTD
    Bonjour,

    J'essaye de faire quelque chose qui me paraît extrêment basique et pourtant je me casse les dents dessus depuis plusieurs jours.

    J'ai un fichier XML contenant une DTD interne et je voudrais récupérer le contenu logique de la DTD : les éléments, les attributs et les informations relatives à leurs déclarations (les enchaînements entre les éléments, leur cardinalité, si un attribut est required, implied, ...).

    Pour parser mon XML j'utilise le parseur DOM inclus dans Java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    final DocumentBuilder builder = factory.newDocumentBuilder();
    Document doc = builder.parse(xmlFile);
    Dans le résultat, je constate que les éléments possédant (dans la DTD) des attributs avec une valeur par défaut sont bien affiché avec ces attributs renseignés à la valeur par défaut si nécessaire.
    La DTD est donc bien parsée, comprise et utilisée par le parseur XML.

    Or le seul endroit où je puisse apparement récupérer la DTD est via doc.getDoctype() mais ça ne me donne strictement aucune information logique sur la DTD, seulement le "internalSubset" au format texte.

    Du coup j'aimerais savoir comment récupérer le validateur de la DTD.
    A défaut, est-il possible d'ajouter un handler pour être notifié du parsing de la DTD (quitte à ce que je fasse un truc à ma sauce pour comprendre le contenu) ?
    A défaut, comment lire le contenu du "internalSubset" avec un parser SAX ?

    Merci d'avance,
    Loceka

  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
    Hello,

    DOM n'est pas fait pour ça. Oui il tient compte des DTD, mais non il ne cherche pas à en exposer le modèle, il n'expose que les données XML elles-mêmes.
    Une recherche Google te donnera quelques bibliothèques tierces de parsing de DTD, mais je ne sais pas si elles marchent bien ni gèrent les DTD internes.

    Si tu veux bricoler par toi-même, il y a SAX et DeclHandler qui te simplifieront pas mal la tâche, mais il restera du parsing à faire par toi-même sur ce qu'il te donneront.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Merci beaucoup thelvin,

    J'avais vu DTDHandler (qui ne s'intéressait qu'aux entités et notations) mais pas DeclHandler.
    Comme tu l'as dit, il ne va pas bien loin vu qu'il ne permet pas de générer la grammaire décrite par la DTD mais c'est suffisant pour ce que je veux faire pour le moment donc ça ira.

    Loceka.

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

Discussions similaires

  1. Mise en place d'une lecture XML avec DTD
    Par cyrilaymard dans le forum XML
    Réponses: 1
    Dernier message: 01/12/2011, 09h52
  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. inverser la lecture d'une requète
    Par nilaco dans le forum Requêtes
    Réponses: 5
    Dernier message: 10/08/2003, 12h16
  4. Faire respecter une DTD !!!
    Par haypo dans le forum Valider
    Réponses: 3
    Dernier message: 12/07/2003, 19h20
  5. Lecture d'une image bitmap
    Par Geronimo dans le forum x86 32-bits / 64-bits
    Réponses: 18
    Dernier message: 28/06/2002, 12h01

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