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 :

Gérer un document XML en Java


Sujet :

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

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Gérer un document XML en Java
    Bonjour
    je suis en train de créer et modifier un fichier xml avec netbeans. J'ai déjà créé un document avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     package tp1;
     
     
     
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import org.jdom.Attribute;
    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.output.Format;
    import org.jdom.output.XMLOutputter;
     
    public class Exercice1 {
        static Element racine=new Element("personnes");
        static org.jdom.Document document =new Document(racine);
            static void enregistrer(String fichier) {
            try {
                XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
                sortie.output(document, new FileOutputStream(fichier));
            } catch (IOException e) {
            }
        }
     
        public static void main(String[]args) {
            Element etudiant=new Element("element");
            racine.addContent(etudiant);
           Attribute classe =new Attribute("classe","LFIM3");
            etudiant.setAttribute(classe);
            Element nom=new Element("nom");
            nom.setText("Votre nom");
            etudiant.addContent(nom);
            XMLOutputter sortie =new XMLOutputter(Format.getPrettyFormat());
            try {
                sortie.output(document, System.out);
            } catch (IOException ex) {
                Logger.getLogger(Exercice1.class.getName()).log(Level.SEVERE, null, ex);
            }
     enregistrer("D:/3LF/TPXML.xml");
    }}
    Je ne sais pas comment réaliser une fonction de suppression d'un élément de document.

    Merci

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Citation Envoyé par hafsia Voir le message
    Je ne sais pas comment réaliser une fonction de suppression d'un élément de document.
    - charger le fichier dans un Document, en utilisant SAXBuilder
    - faire tes modifications sur l'objet Document (pour enlever des éléments, tu peux appeler removeContent() sur leur parent, ou detach() sur eux-mêmes.)
    - réécrire le Document dans un fichier, exactement comme tu le fais dans ton exemple.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 71
    Points : 89
    Points
    89
    Par défaut
    Attention, il existe 2 familles de parsers XML : SAX et DOM, qui fonctionnent de façon complètement différentes.

    Il a l'air d'utiliser DOM, tu sembles lui proposer une librarie de type SAX.
    Pour le reste, je suis d'accord sur le fonctionnement.

    Pour hafsia, je distingue quand même les deux:

    DOM
    Ton document est chargé entièrement en mémoire. Tu peux ensuite l'interroger via l'API DOM (récupérer la liste des balises dont le nom est "abc" récupérer ses fils, ses voisins etc).
    C'est clairement ce qu'il y a de plus pratique mais ce n'est pas adapté aux gros fichiers (puisque tout le fichier doit être contenu en mémoire)

    SAX
    Ton document est parcouru une seule fois et tu dois prévoir des méthodes qui seront appelées
    • A chaque début de balise
    • A chaque fin de balise
    • A chaque attribut
    • etc (je ne me rappelle pas de l'API par coeur)

    ça te force donc à créer une classe qui implémente une interface idoine et la passer en paramètre à ton parser. C'est beaucoup plus performant mais aussi beaucoup plus chiant à gérer

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Citation Envoyé par liouan Voir le message
    Il a l'air d'utiliser DOM, tu sembles lui proposer une librarie de type SAX.
    Pas le moins du monde.

    J'ai parfaitement remarqué qu'il utilise JDOM.
    La classe SAXBuilder n'est que le parseur de fichier XML de JDOM : il s'agit de construire un Document JDOM en parsant du XML, ce qui en général se fait avec un parseur SAX, c'est logique. D'où le nom.
    Enfin, au bout d'un moment on s'en fout, de son nom. Avec JDOM quand on veut parser du XML en Document, on utilise SAXBuilder, ça se voit dès le premier exemple.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 169
    Points : 140
    Points
    140
    Par défaut
    bonjour ,

    tu peut essayer ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nom_element.removeChild();

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2010
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 221
    Points : 92
    Points
    92
    Par défaut Gérer un document XML en Java
    Saut toi, je vois effectivement que tu as utilisé la technologie JDOM pour gérer tes fichiers XML. Ainsi comme te l'a conseillé Thelvin tu dois parser ton fichier XML puis parcourir celui-ci a travers ces itérations afin de récupérer le noeud que tu désires supprimer puis appliquer l'instruction de fruwen7. Là je pense que ça devrait marcher. a +

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Points : 295
    Points
    295
    Par défaut
    Bonjour,

    Si ton fichier n'est pas trop gros, pour quoi ne pas passer par une transformation xslt ?

    http://fr.wikipedia.org/wiki/Extensi...ransformations

    Il te suffit d'ajouter des transformations vides (pour les éléments que tu veux enlever) à la transformation identité.

    Bon courage

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Citation Envoyé par LittleBean Voir le message
    Si ton fichier n'est pas trop gros, pour quoi ne pas passer par une transformation xslt ?
    ??

    Parce que c'est nettement plus compliqué que JDOM quand on veut juste enlever des éléments, et que ça ne consomme pas moins de mémoire ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Quels modules Perl pour gérer les documents XML ?
    Par djibril dans le forum Modules
    Réponses: 8
    Dernier message: 03/12/2010, 00h54
  2. [XSLT] Transformation de document .XML ou .TXT en Java
    Par ham83dje dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 30/05/2008, 13h16
  3. [JAVA] Problème supression noeud d'un document XML
    Par vero59 dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 16/08/2005, 17h12
  4. Documentation sur la manière de travailler avec le XML en java
    Par DelPiero62 dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 26/03/2003, 10h16

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