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 :

java & XML, problème de parsing avec JDOM


Sujet :

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

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Points : 10
    Points
    10
    Par défaut java & XML, problème de parsing avec JDOM
    Bonjour,
    je suis actuellement sur un projet en Java qui consiste à analyser un fichier XML.
    J'ai choisis l'api JDOM, pour sa simplicité d'utilisation.
    Mais seulement voila, mon fichier XML contient une balise doctype qui renvoie à une DTD sur une URL externe, sauf, que je travaille en interne, et que je ne veux pas télécharger la DTD correspondante car elle diffère selon le fichier XML analysé.
    Alors, lors du parsing avec JDOM, celui-ci me renvoie une exception du type 'UnknownHostException' ce qui est logique puisqu'il n'arrive pas à se connecter à l'url de la doctype.
    J'ai donc une question :
    est il possible d'indiquer au parseur que je ne veux pas me référer à la DTD, ou plus généralement est il possible d'ignorer la balise Doctype, sans l'enlever évidemment.
    NB: le parsing XML avec JDOM s'appuyant sur un constructeur de la classe SAX, j'ai consulté la Javadoc sur ce constructeur.
    J'ai appris qu'on pouvait spécifier s'il fallaît valider ou non le document par un argument boolean, mais, lorsque je le switch sur False, rien ne change.
    Merci de vos réponses @+

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Ce n'est pas parceque tu demandes au parseur de ne pas valider le document qu'il ne va pas tout de même lire la DTD.

    Si tu ne peux pas récupérer les DTD en local ni avoir de connexion internet pour récupérer les DTD en question, il va te falloir supprimer (ou au moins commenter) cette partie de tes fichiers

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Ah, moi qui pensait qu'on aurait pu éviter cette lourde tâche
    Et tu connais pas de parseur a qui on peut indiquer de lire ou de ne pas lire la DTD?

  4. #4
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Non désolé... Pour mes besoins, JDom a toujours été suffisant, donc je n'ai pas beaucoup regardé du côté des concurrents...

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Ok, merci quand même

  6. #6
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 147
    Points : 156
    Points
    156
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NB: le parsing XML avec JDOM s'appuyant sur un constructeur de la classe SAX, j'ai consulté la Javadoc sur ce constructeur.
    Alors il est peux être possible de définir le "Handler" sax à utiliser pour le parsing.
    En effet, la méthode javax.xml.parsers.SAXParser.parse() prend en paramêtre un HandlerBase ou un DefaultHandler qui définissent ce qu'il faut faire à chaque évenement que sax rencontre (ouverture de balise, definition d'attribut, ... et déclaration de doctype).
    Il suffirait alors de réécrire la méthode qui correspond à la déclaration du doctype pour qu'elle ne fasse ... rien.

    Dis moi si c'est possible, je suis intéressé moi aussi !!!

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    J'ai cherché des infos sur les ErrorHandler avec SAX mais je me demande si ce sera compatible avec mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //création d'un objet SAXBuilder
    SAXBuilder sxb=new SAXBuilder();
    //parsing du fichier passé en argument
    Document doc=sxb.build(cheminDuFichier);
    j'ai vu que sur mon objet sxb je pouvais appliquer des méthodes telles que :
    getErrorHandler(), setErrorHandler() ...
    je vois pas trop comment les utiliser...
    Désolé de n'avoir pu te renseigner

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 22
    Points : 17
    Points
    17
    Par défaut
    Salut,

    J'ai eu le même problème que toi et j'ai résolu mon problème avec le bout de code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //On crée une instance de SAXBuilder
    SAXBuilder sxb = new SAXBuilder();
    try {
        sxb.setValidation(false);
        sxb.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
        document = sxb.build(xmlFile);
    } catch(Exception e){
        e.printstacktrace();
    }
    Si jamais ça peut résoudre ton problème...

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Désolé je n'ai pas encore testé le code ci dessus, je pourrai le faire qu'à partir de la semaine prochaine.
    Bonne vacance

  10. #10
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut
    Pour les suivants, la solution proposée par Aragorn05 fonctionne (je viens de la mettre en place pour ignorer la DTD).

Discussions similaires

  1. [JDOM] Problème de parsing avec JDOM
    Par saraMPK dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 12/07/2012, 17h34
  2. Problème de parse avec Java
    Par sirina88 dans le forum Langage
    Réponses: 2
    Dernier message: 23/08/2011, 14h22
  3. [DOM] Problème de parsing avec DomParser
    Par iam_free dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 21/04/2006, 09h33
  4. Problème de parsing avec tomcat
    Par groupe51 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 20/04/2006, 09h28
  5. [Plugin / XML] Problème plugin Eclipse avec JDOM
    Par kiko_18 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 12/02/2005, 13h55

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