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 :

Récupérer les données d'une balise précise


Sujet :

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

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 18
    Points : 5
    Points
    5
    Par défaut Récupérer les données d'une balise précise
    Bonjour,

    Je voudrais récupérer les données d'une balise dans un fichier xml.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <VM_POOL><VM><ID>175</ID><UID>14</UID><GID>1</GID><UNAME>bello</UNAME><HOSTNAME>141.98.10.11</HOSTNAME></VM>..... </VMPOOL>
    Et moi je voudrais récupérer bello contenue dans les balises et l'adresse IP dans les balises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <HOSTNAME>...</HOSTNAME>
    Et je voudrais une sortie comme cela bello : 141.98.10.11 que je pourrais ensuite écrire dans un fichier texte.

    J'espère que vous pourrez m'aider.

    Cordialement,

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2006
    Messages : 4 084
    Points : 7 996
    Points
    7 996
    Par défaut
    Avec un parseur XML ou tout a la main ?

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Comment cela ?

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Ben... De quoi tu veux te servir pour faire ça ?
    C'est un travail pour informaticien, tu connais quels outils d'informaticiens ? Des langages de programmation ? Tu sais programmer en Java, en C#, ou quelque chose de ce genre ?

    Sinon, il y aurait toujours moyen de faire une feuille XSLT et d'afficher le fichier dans un navigateur, pour qu'il produise le résultat demandé, que tu pourrais copier/coller...

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Ah oui désolé je sais programmer et je voudrais faire ce programme en JAVA et je voudrais que le résultat soit dans un fichier texte écrit par le programme java.

    Désolé du manque de précision.

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2006
    Messages : 4 084
    Points : 7 996
    Points
    7 996
    Par défaut
    Ok. Je vais reposer cela différement, Peux tu déjà répondre a ceci :

    1) En java comment comptes tu t'y prendre pour lire le dit fichier xml. (est tu capable de lire un ficheir texte ligne/ligne, est tu capable d'utiliser une librairie pour parser du xml)
    2) Même chose mais pour écrire ton resultat. (est tu capable d'écrire dans un fichier du simple texte).

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    1- Je sais qu'il est possible de le faire avec le buffer et qu'il existe des librairies SAX ou DOM mais je ne trouve pas de code pour avoir qu'un fragment du document XML.

    2- Pour écrire dans un fichier texte on peut faire un code comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    File file = new File("chemin_du_fichiertext_file.txt");
            PrintWriter out = new PrintWriter(new FileWriter(file));
            out.println("The message is" + message); // Writing in the text file
            out.close(); // Closing of the text file and safeguard of this one

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2012
    Messages : 56
    Points : 84
    Points
    84
    Par défaut
    Salut,

    Ca devrait t'être utile :

    http://java.developpez.com/faq/xml/?page=sax

    Pour récupérer le champ que tu désires, tu appelles simplement le getter associé !

    Bon courage

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup.

    Mais j'ai déjà vu ce code mais il ne m'aide pas trop. Je voudrais avoir un exemple de code pour que je puisse mieux comprendre.

    Merci d'avance,

  10. #10
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2006
    Messages : 4 084
    Points : 7 996
    Points
    7 996
    Par défaut
    Un autre exemple avec JDOM au cas ou : http://cynober.developpez.com/tutoriel/java/xml/jdom/

  11. #11
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Citation Envoyé par Dismantle Voir le message
    http://java.developpez.com/faq/xml/?page=sax

    Pour récupérer le champ que tu désires, tu appelles simplement le getter associé !
    Euh, non -_-°. Par principe, avec SAX, il n'y a pas de getter associé. L'une des possibilités est d'en programmer un soi-même.
    Ce qui est monstrueusement chiant, raison pour laquelle JDOM est un choix nettement plus agréable.

  12. #12
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    J'ai reussi a récupérer les données dans une balise mais lorsque le fichier est de structuré de cette facon je n'y arrive pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <VM_POOL>
    <VM>
        <ID>175</ID>
        <UNAME>bello</UNAME>
       <HISTORY>
                <HOSTNAME>141.98.10.11</HOSTNAME>
       </HISTORY>
    </VM>..... 
    </VMPOOL>

    Je n'arrive pas à récupérer la balise HOSTNAME

    Voici mon code:

    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
    public class JDOM2_1
    {
       static Document document;
       static Element racine;
    
       public static void main(String[] args)
       {
          
          SAXBuilder sxb = new SAXBuilder();
          try
          {
            
             document = sxb.build(new File("Exercice4.xml"));
             
          }
          catch(Exception e){
        	  System.out.println( e );
          }
    
        
          racine = document.getRootElement();
    
          
          afficheALL();
       }
       
     //Ajouter cette méthodes à la classe JDOM2
       static void afficheALL()
       {
          
          List listNom = racine.getChildren("VM");
    
         
          Iterator i = listNom.iterator();
          while(i.hasNext())
          {
             Element courant = (Element)i.next();
             System.out.println(courant.getChild("NAME").getText());
             
             //System.out.println(courant.getChild("HOSTNAME").getText()); 
             //J'ai essayé de mettre la ligne précédente sa ne fonctionne pas 
          }
       }
    }

    J'ai testé ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Element NomHost = racine.getChild("HOSTNAME");
    System.out.println(NomHost.getText());

  13. #13
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Et quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    history.getChild("HOSTNAME");
    Ça marcherait pas mieux ?

  14. #14
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Pourquoi history?

  15. #15
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2006
    Messages : 4 084
    Points : 7 996
    Points
    7 996
    Par défaut
    Parce que c'est la nœud père de HOSTNAME, dont le grand père est VM. Tu es sure d'avoir compris le principe du xml ?

  16. #16
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Oui j'ai compris le principe du XML.

    On doit pouvoir mettre un code comme cela ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Element listNom = racine.getChildren("VM");
    Element history = listNom.getChild("HISTORY")
    Element hostName = history.getChild("HOSNAME")

  17. #17
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    J'ai fait ce code:

    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
    static void afficheHOSTNAME()
       {
          String HostName = "";
          Element listNom = racine.getChild("VM");
        		  Element history = listNom.getChild("HISTORY_RECORDS");
        		  List hostName = history.getChildren("HISTORY");
     
     
          Iterator i = hostName.iterator();
          while(i.hasNext())
          {
             Element courant = (Element)i.next();
             HostName = courant.getChild("HOSTNAME").getText();
     
             //Element NomHost = history.getChild("")
     
            System.out.println(courant.getChild("HOSTNAME").getText()); 
          }
     
       }
    mais je n'ai qu'une sortie alors qu'il en a 5. je dois obtenir 5 adresses IP

    Pourquoi cela?

  18. #18
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Si vous voulez pour aller directement au but, je réfère à la poste 20/08/2012 11h06.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
             Element courant = (Element)i.next();    //ligne #37
             System.out.println(courant.getChild("NAME").getText());
             System.out.println(courant.getChild("HISTORY").getValue().trim());
    Bien sûr, on le peut faire par un chemin plus long mais avec plus de contrôle.

  19. #19
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 18
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Lorsque j'ai de nouveau regardé la structure du XML. J'ai remarqué qu'elle était différente.
    Elle est comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <VM_POOL>
    <VM>
        <ID>175</ID>
        <UNAME>bello</UNAME>
       <HISTORY_RECORDS>
                <HISTORY>
                        <HOSTNAME>141.98.10.11</HOSTNAME>
                </HISTORY>
       </HISTORY_RECORD>
    </VM>..... 
    </VMPOOL>
    Est ce pour cela que je n'arrive toujours pas à récupérer les données.

    Cordialement,

  20. #20
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Si la ligne pour UNAME marche, la ligne suivant derait marcher aussi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
             Element courant = (Element)i.next();    //ligne #37
             System.out.println(courant.getChild("UNAME").getText());
             System.out.println(courant.getChild("HISTORY_RECORD").getValue().trim());
    Il me semble quelques choses vous manquent: c'est de lire la documentation en aidant par les mots clés apparus dans les solutions proposées très concrètes et sur les points de difficulté.

Discussions similaires

  1. Réponses: 5
    Dernier message: 07/09/2006, 14h41
  2. récupérer les données d'une fenetre
    Par snoopo dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 23/06/2006, 17h23
  3. Réponses: 15
    Dernier message: 20/06/2006, 10h29
  4. Récupérer les données après une recherche
    Par cdumas dans le forum Access
    Réponses: 7
    Dernier message: 04/05/2006, 12h09
  5. Récupérer les données d'une iframe
    Par juli1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 09/02/2005, 22h53

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