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 :

Comment traiter les occurences d'un Xml en java ?


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Par défaut Comment traiter les occurences d'un Xml en java ?
    Bonjour,

    Je souhaiterais savoir comment je pourrais traiter des occurences d'un fichier XML tels que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <Test>
      <Information T="A">C</Information> 
      <Information T="B">D</Information> 
    </Test>
    Comment je pourrais traiter cette occurence avec une hashmap ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if("Information".equals(rawName)){
            		map_Info.put("T=A",recupChaine);
            		map_Info.put("T=B",recupChaine);
            		test.setMap_Info(map_Info);
     
            	    Set entries = map_Info.entrySet();
            	    Iterator it = entries.iterator();
            	    while (it.hasNext()) {
            	      Map.Entry entry = (Map.Entry) it.next();
            	      System.out.println(entry.getKey() + "-->" + entry.getValue());
            	    }
    Le souci étant que ma recupChaine écrase ma précédente.
    Du coup cela me fait
    T=A-->D au lieu de T=A-->C
    T=B-->D

    Merci.

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Citation Envoyé par larmedesang Voir le message
    Je souhaiterais savoir comment je pourrais traiter des occurences d'un fichier XML tels que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <Test>
      <Information T="A">C</Information> 
      <Information T="B">D</Information> 
    </Test>
    Tu veux quoi en sortie à partir de ce fichier ?
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Par défaut
    J'ai oublié de poster cette étape de mon endElement (sax) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                	else if("Test".equals(rawName)){
                		test.setInformation(derniereChaineLue);
                		map_Test.put("T=A",test.getInformation());	            	
                		map_Test.put("T=B",test.getInformation());	
                		truc.setMap_Information(map_Test);
                	}
    Ce que je souhaiterais récupérer c'est
    T=A-->C
    T=B-->D


    Mon souci est comment récupérer dans "test.setInformation(derniereChaineLue);"
    de manière à ce que je puisse retrouver :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    map_Test.put("T=A",test.getInformation());<--T=A-->C            	
    map_Test.put("T=B",test.getInformation());<--T=B-->D

  4. #4
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    La réponse me parait être simple utilisé la valeur de l'attribut

    Voir org.xml.sax.ContentHandler.startElement et org.xml.sax.Attributes
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 149
    Par défaut
    Citation Envoyé par Nemek Voir le message
    La réponse me parait être simple utilisé la valeur de l'attribut

    Voir org.xml.sax.ContentHandler.startElement et org.xml.sax.Attributes
    Bonjour,

    Merci pour ta réponse.
    Oui effectivement, je suis passé par la récupération des attributs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    map_Information.put(attQName+"="+attValue,charactere)
    cela marche bien pour le cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <Test>
      <Information T="A">C</Information> 
      <Information T="B">D</Information> 
    </Test>
    Par contre nouveau cas n°2 confronté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <Test>
      <Information T="A">C</Information> 
      <Date> 2011-04-06 <Date>
      <Information T="B">D</Information> 
    </Test>

    Pour ça je vais voir si je peux rajouter un compteur pour que la date ne soit lue qu'une fois. Votre avis?

    Pour le cas N°3 je pense qu'il faut passer par une liste en récupérant les setters ( votre avis ? ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <Test>
      <Information T="A">C</Information> 
      <Periode>
          <Debut> 2011-04-06 </Debut>
      </Periode>    
      <Information T="B">D</Information> 
      <Periode>
          <Debut> 2011-06-08 </Debut>
      </Periode>    
    </Test>
    Cdt,

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 149
    Par défaut
    Bon bein pour le cas n°2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <Test>
      <Information T="A">C</Information> 
      <Date> 2011-04-06 <Date>
      <Information T="B">D</Information> 
    </Test>
    Je pensais faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                		map_Information.put(attQName+"="+attValue,charactere);		
                		test.setMap_Information(map_information);
     
                		for (i=0 ; i<1; i++){
                		information.setDate(charactere);	
                   		}
     
                	}
    Mais bien entendu ça ne sert à rien et ne marche pas car à la deuxième occurence il va tenter d'ajouter une date avec un charactere qui ne correspond pas.

  7. #7
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Par défaut
    Citation Envoyé par Nemek Voir le message
    Tu veux quoi en sortie à partir de ce fichier ?
    Bonjour,

    Merci pour ta réponse.
    à partir du xml je récupère les données pour les mettres dans un fichier text.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    map_Test.put("T=A",test.getInformation()); //T=A-->C            	
    map_Test.put("T=B",test.getInformation());  //T=B-->D
    Or mon souci est au niveau de la récupération et attribution des données dans mon hashmap car seule la dernière valeur récupéré est stockée donc je me retrouve avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    map_Test.put("T=A",test.getInformation()); //T=A-->D            	
    map_Test.put("T=B",test.getInformation());  //T=B-->D
    à cause de ceci :
    test.setInformation(derniereChaineLue);

Discussions similaires

  1. Comment traiter les espaces dans le nom du fichier
    Par maban dans le forum VBA Access
    Réponses: 1
    Dernier message: 03/08/2007, 20h25
  2. [GD] Comment traiter les yeux rouges ?
    Par Roromix dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 04/06/2007, 12h38
  3. Comment traiter les GError **error ?
    Par troumad dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 02/04/2007, 09h30
  4. [VB.NET] Page Edition, comment traiter les <br?
    Par zigoto dans le forum ASP.NET
    Réponses: 12
    Dernier message: 08/02/2005, 17h05

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