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 et modification d'un fichier XML [StAX]


Sujet :

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

  1. #1
    Membre confirmé Avatar de Thewil
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2006
    Messages : 223
    Par défaut Lecture et modification d'un fichier XML
    Bonjour tout le monde,

    J'aurais besoin d'un petit coup de pouce de votre part. J'ai un document XML (~10Mo) que je dois traiter.

    L'idéal pour moi serait de pouvoir modifier directement le document en le parcourant.
    J'ai divers choses à faire sur ce document :
    - Je dois modifier le nom d'un noeud VERT
    - Supprimer des balises et ce qui se trouvent entre.ROUGE
    - Copier ce qui se trouve entre 2 balises dans une nouvelle balise BLEU
    - Créer des nouvelles balises VIOLET

    Le top serait de pouvoir dire tu va à cette balise, tu modifies le nom du noeud, tu va à cette balise tu stockes dans une variable ce qu'il y a entre les deux pour pouvoir le coller plus tard dans une nouvelle balise.

    Petit schéma du XML de début et de fin que j'aimerais :
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    <BALISE1>
       <BALISE1METIER>
        <entry>
         <int>1</int>
         <hashtable>
          <entry>
          <int>1</int>
          <BALISE1-1>
           <CsteA>5</CsteA>
           <CsteB>5</CsteB>
           <categories>
            <Categorie>
             <nom>FLEURETTE</nom>
             <balise2>
    
              <balise2-1>
              A REMPLACER PAR
              <REMPLACEBALISE2-1>
    
               <nbGroupes1>1</nbGroupes1>
               <nbGroupes2>0</nbGroupes2>
    
               A SUPPRIMER
               <plouf>
                <points>
                 <PointAbs>
                  <pas>0</pas>
                  <valeur>0</valeur>
                 </PointAbs>
                 <PointAbs>
                  <pas>1</pas>
                  <valeur>60</valeur>
                 </PointAbs>
                </points>
               </plouf>
               <libelle>ICI</libelle>
    
               A COPIER ET A GARDER EN VARIABLE
               <commentaires></commentaires>
    
              </balise2-1>
             </balise2>
            </Categorie>
    
            A CREER
            <Categorie>
             <nom>FLEURETTE</nom>
             <balise2>
    
               COPIER LA VARIABLE
               <commentaires></commentaires>
                
             </balise2>
            </Categorie>
    
    
    
           </categories>
           <dateDonnees reference="date"/>
          </BALISE1-1>
         </entry>
        </hashtable>
       </entry>
      </BALISE1METIER>
      <boolean>true</boolean>
     </BALISE1>
    J'ai donc commencé à utiliser Stax mais j'ai l'impression que ça ne répond pas forcément à mes attentes en tout cas facilement car je ne peux pas chercher une balise directement.

    Auriez vous qqchose à me conseiller pour faire ce que je vais faire assez simplement et bien sûr sans que la taille du fichier n'implique un problème de lenteur.
    J'ai pensé à du XSLT, DOM ?

    Merci beaucoup

  2. #2
    Membre Expert
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Par défaut
    Bonjour Thewil,

    avec XSLT, tu peux écrire les règles vont modifiées ton document XML.
    Ensuite le processeur qui traitera ta feuille de style XSLT utilisera SAX ou DOM.

    Autrement, tu peux utiliser les API SAX ou DOM directement en Java, dans ce cas tu n'as plus besoin de XSL. Généralement SAX est préférable pour les gros documents car DOM utilise pas mal de mémoire, plus précisement, on choisi l'API aussi en fonction du traitement qui va être effectuer sur le XML.

  3. #3
    Membre confirmé Avatar de Thewil
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2006
    Messages : 223
    Par défaut
    Tout d'abord merci pour ta réponse.

    J'ai en effet regardé un peu les technos que tu as cité mais à ton avis quelle est la plus efficace pour un traitement qui ressemble au mien.

    Car si j'ai bien compris SAX parcourt aussi le document ligne par ligne donc je trouve pas ça forcément pratique. En gros quand t'arrive à la balise ouvrante qui correspond à ce que tu cherches il faut boucler jusqu'à arriver à la balise fermante et supprimer le XML parcouru par exemple.

    L'idéal serait pour moi de dire va direct à cette balise et fait tel traitement. Et le must serait que ça soit fait dans le même fichier XML. Je crois que c'est un peu ce que fait DOM ?

    Mon fichier fait plus de 100 000 lignes donc est ce que la génération de l'arbre DOM ne va pas être trop long ?

    Enfin voila je ne sais pas vraiment quoi choisir pour me faciliter la tâche.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Citation Envoyé par Thewil Voir le message
    J'ai donc commencé à utiliser Stax mais j'ai l'impression que ça ne répond pas forcément à mes attentes en tout cas facilement car je ne peux pas chercher une balise directement.
    Stax est ce que tu auras de mieux vu tes contraintes, mais il ne fait pas tout à ta place. Rien ne t'empêcher de programmer un wrapper qui se base sur Stax pour avancer jusqu'à la balise qui t'intéresse.
    Bon, euh... Ça devrait déjà exister quelque part mais je n'en trouve pas. Enfin c'est pas bien compliqué à faire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé Avatar de Thewil
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2006
    Messages : 223
    Par défaut
    Avec Stax je ne vois pas trop comment atteindre la balise voulue en fait. Et une fois dans la balise il faut que je boucle jusqu'à la fin de la balise.
    Sans faire de wrapper je ne vois pas comment faire en tout cas et mon but est justement d'essayer de ne pas tout réécrire moi même

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

Discussions similaires

  1. [DOM XML] Modification d'un fichier XML en php
    Par aldo-tlse dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 07/07/2006, 18h28
  2. [xml/xsl/xhtml] modification d'un fichier XML
    Par florent_de_brest dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 25/05/2006, 20h43
  3. [c#] Modification d'un fichier XML
    Par topolino dans le forum Windows Forms
    Réponses: 13
    Dernier message: 21/03/2006, 14h51
  4. [C#]Lecture et Ecriture d'un fichier .xml
    Par debug dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/01/2006, 12h41
  5. [DOM] Modification d'un fichier XML
    Par nana1 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 21/11/2005, 23h22

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