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 :
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.
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);
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
Partager