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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 095
    Par défaut
    Avec un parseur XML ou tout a la main ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    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
    Par défaut
    Comment cela ?

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    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...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    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
    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
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 095
    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).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre averti
    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
    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 Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    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.

  9. #9
    Membre averti
    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
    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,

  10. #10
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    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é.

  11. #11
    Membre averti
    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
    Par défaut
    Merci de votre réponse.

    J'ai testé mais le problème est que j'obtiens cette réponse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    client
    1141.28.98.15413448422621344842503vmm_kvmdummy1344842262134484226213448422621344842503134484250313448425032
    Client2
    0141.28.98.11013406369771344522423vmm_kvmdummy1340636977134063697813406369781344522422134452242213445224232
    .....
    Mais je veux juste cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    client
    1141.28.98.154
    Client2
    0141.28.98.110
    Que dois je faire pour?
    Je m'excuse de vous importunité mais j'ai du mal à récupérer que les adresses IP.
    Car dans les balises <HISTORY_RECORDS> il y a d'autres balises.

    Merci

  12. #12
    Membre averti
    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
    Par défaut
    Je voulais juste allégée la structure mais elle est de la sorte:

    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
    <HISTORY_RECORDS>
       <HISTORY>
          <SEQ>1</SEQ>
          <HOSTNAME>141.28.98.15</HOSTNAME>
          <HID>4</HID>
          <STIME>1344842262</STIME>
          <ETIME>1344842503</ETIME>
          <VMMMAD>vmm_kvm</VMMMAD>
          <VNMMAD>dummy</VNMMAD>
          <PSTIME>1344842262</PSTIME>
          <PETIME>1344842262</PETIME>
          <RSTIME>1344842262</RSTIME>
          <RETIME>1344842503</RETIME>
          <ESTIME>1344842503</ESTIME>
          <EETIME>1344842503</EETIME>
          <REASON>2</REASON>
       </HISTORY>
    </HISTORY_RECORDS
    Et je ne veux que le <HOSTNAME> </HOSTNAME>

    Merci pour votre aide.

  13. #13
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Si vous voulez..., je repète aussi avec des changements tout le temps.

    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_RECORDS").getChild("HISTORY").getChild("HOSTNAME").getText());

  14. #14
    Membre averti
    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
    Par défaut
    Merci beaucoup.

    Et je m'en excuse encore pour tout ses changement de dernières minutes.

    Je vais maintenant ècrire toutes les données dans un fichier texte.

  15. #15
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Ariania Voir le message
    Je m'excuse de vous importunité mais j'ai du mal à récupérer que les adresses IP.
    Car dans les balises <HISTORY_RECORDS> il y a d'autres balises.
    Quelqu'un qui comprend quelque chose à XML aurait trouvé évident qu'il fallait juste chaîner les getChild() -_-°. Mais bon, c'était une question vache.

    Au passage, si tu veux vraiment que les <HOSTNAME> et pas les <UNAME>, ça aurait été encore plus simple avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getDescendants(Filters.element("HOSTNAME"))
    Pas besoin de s'embêter avec le chemin complet.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Membre averti
    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
    Par défaut
    Effectivement vous avez sans doute raison mais heureusement que vous etes censé aider les gens sans tenir compte du niveau d'expertise dans le domaine. Il y a une différence entre connaitre le fonctionnement (l'écriture) en XML et le parsing en JAVA.

  17. #17
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Ariania Voir le message
    Effectivement vous avez sans doute raison mais heureusement que vous etes censé aider les gens sans tenir compte du niveau d'expertise dans le domaine.
    C'est pour ça que j'admets que cette question était vache. Ça ne se fait pas de demander "Mais, tu comprends <truc>, au moins ?" quand il est clair que la personne ne comprend pas bien <truc>.
    Il n'empêche que tu n'es pas plus avancé en disant le contraire -_-°.

    Citation Envoyé par Ariania Voir le message
    Il y a une différence entre connaitre le fonctionnement (l'écriture) en XML et le parsing en JAVA.
    Sauf que ce qu'il te manquait, ce n'était pas du Java, c'était du XML. En Java, tout ce qu'il te fallait, c'était JDOM, SAXBuilder, getChildren(), et getChild(). Tu les avais déjà.

    Le fonctionnement de XML ce n'est pas une écriture. Une écriture n'a pas de fonctionnement, il n'y a rien à comprendre, une écriture est.
    XML c'est un format de document. L'écriture n'est qu'un moyen de représenter ce document.

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <HISTORY_RECORDS>
       <HISTORY>
          <HOSTNAME>141.28.98.15</HOSTNAME>
      </HISTORY>
    </HISTORY_RECORDS>

    Représente un élément nommé "HISTORY_RECORDS", qui a un fils nommé "HISTORY", qui a un fils nommé "HOSTNAME", qui contient le texte recherché.

    Fils de fils de fils, donc getChild(), getChild(), getChild().

    C'est ça qui te manque. Savoir que XML a un sens, et lire des tutoriels XML si tu veux pouvoir t'en servir.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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