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 :

Parseur XML en Java avec DOM


Sujet :

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

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Parseur XML en Java avec DOM
    Bonjour. Je bosse sur un projet de XML Parser et j'utilise le package org.w3c.dom . J'ai suivi plusieurs tutoriels vidéo sur le sujet mais à chaque fois ces tutos s'appliquaient à un exemple de fichier XML. Mon but est en fait de faire un parseur XML capable de parser n'importe quel fichier qu'on lui passera en paramètres mais je suis confronté à un problème en particulier. Comment récupérer le nom d'un nœud XML c'est à dire d'une le nom d'une balise dans un fichier xml ce qui me permettrait de l'appliquer à tous les nœuds de l'arbre. Ainsi je n'aurai pas à spécifier le nom de la balise en question dans mes lignes de codes.
    Merci pour l'attention. Le projet est à rendre le 13 Juillet. J'espère avoir des réponses rapides merci.!

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Ton but est d'écrire un parser XML ou d'en écrire un ? Pour en écrire un, il faut parcourir le flux provenant du fichier, et récupérer les caractères un à un, les analyser, et en fonction de ces caractères faire quelque chose (déterminer qu'on ouvre un tag, qu'on le ferme, etc...) : en résumé, écrire un automate à états finis (ou le générer). Eventuellement, plus simple, tu peux aussi utiliser un parseur SAX ou mieux STaX pour construire un DOM, (avec un parseur STaX, tu récupéreras facilement le nom des tags, les entités converties, etc... mais le parsing proprement dit sera fait : ce n'est peut-être pas le but de l'exercice).
    Si c'est pour en utiliser un, il suffit de l'utiliser (toutefois, plutôt que d'utiliser le parseur standard de Java, je te conseille d'utiliser plutôt JDOM, plus simple).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Mon but est d'en écrire un. Mais y a t'il pas un moyen dans écrire un avec DOM vu qu'il permet un accès aléatoire à l'arborescence du fichier XML. Ou JDOM fera l'affaire?

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Tu peux construire un DOM org.w3c (sous entendu avec les classes standard de Java) sans avoir de fichier : donc tu peux créer un DOM avec le résultat de ton parseur (automate à états finis par exemple). Ce sera probablement un peu plus simple avec JDOM, l'API étant plus simple. Tu peux aussi te créer ta propre API DOM aussi.
    Je ne vois pas ce que tu veux dire par accès aléatoire à l'arborescence du fichier XML : le DOM n'est pas le fichier, c'est la réprésentation d'un arbre de nœuds, en mémoire, point. Et oui, on peut accèder à n'importe quel nœud quand on veut. Mais cela n'a rien à voir avec un fichier.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    OK. S'il te plait peux tu me diriger vers des exemples permettant de créer des parseur XML automates avec Dom ou Jdom?

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Hello,

    Personne ne fait ça et donc il n'y a pas d'exemple. Les parseurs sont déjà écrits depuis des décennies. Il n'y a pas besoin d'en faire des nouveaux.
    L'exercice peut être sympathique, mais c'est un exercice justement parce qu'il n'y a pas d'exemple qui te montre comment on fait (s'il y en avait, ton travail consisterait à faire quoi, au juste ? Recopier l'exemple ?)

    Tu peux toujours regarder nos tutoriels JDOM qui expliquent comment créer un document JDOM à partir de rien.
    Mais comment faire pour le créer à partir des balises lues par ton parseur, ça il va falloir que tu y penses par toi-même.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Non, je n'en connais pas. Si tu dois faire ça pour la semaine prochaine alors que tu demandes des exemples d'automates à états finis, c'est inquiétant. Tu sais ce que c'est au moins ? Normalement, si on te donne un exercice à faire, c'est que tu as eu les cours pour pouvoir le faire. Tu connais Lex ou JFlex ? JFlex qui te permettra justement de générer un automate à partir de la description d'une grammaire. Aurais-tu le droit de l'utiliser, ou dois-tu écrire l'automate toi même de zéro ? Si c'est le cas, tu peux y réfléchir par toi même, déjà, à commencer par détecter les < et >, puis le /, puis le &, suivi de ;, etc... Sans exemple, ça n'est pas très compliqué, c'est une boucle, une liste d'états pour connaitre le contexte, une pile, et un StringBuilder pour cumuler les caractères lus. Mais il faut bien connaitre XML si tu veux pouvoir tout traiter (CDATA, PI, etc.)
    Je peux te refiler un code que j'avais fait pour coloriser du html même incorrect, ça peut te mettre sur la voie (mais ce sera en l'état).

    Sinon, tu es sûr que tu ne peux pas utiliser Sax ou Stax, parce que déjà ça te permet de ne pas avoir à gérer le décodage, uniquement à construire le DOM, en gérant une pile.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Ok ce que je vais faire serai d'explorer les possibilité offerte par sax et stax. Merci pour tes réponses

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Bonjour c'est encore moi. Comme je l'ai dit j'ai explorer les possibilité qu'offrait SAX pour parser du XML. Et merci à vous j'ai pu obtenir le résultat excompté. Mais j'ai encoreun problème.
    Le voici: J'aimerais recupérer la chaine de caractère situé entre deux chevrons. Exemple: <Document> Cours Java </Document>. Je voudrais récupérer "Document". Quelqu'un a une idée de comment faire ça? Merci d'avance.

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Bénin

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    J'ai ma réponse Merci

Discussions similaires

  1. XML vers java avec XSLT ?
    Par anime dans le forum XML/XSL et SOAP
    Réponses: 18
    Dernier message: 28/04/2011, 20h24
  2. sérialisation XML en java Avec des Matrice ArrayList
    Par bilred dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 16/04/2009, 15h55
  3. [XML] Générer DTD avec DOM ou Xerces.
    Par El_touristo dans le forum Valider
    Réponses: 1
    Dernier message: 02/03/2006, 21h39
  4. Parseur XML to Java pour creation de Class
    Par yannick101 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 18/07/2005, 14h20

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