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ération le contenu de balise dans un tableau de chaînes [JDOM]


Sujet :

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

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Points : 52
    Points
    52
    Par défaut récupération le contenu de balise dans un tableau de chaînes
    bonsoir à tous

    j'ai un fichier xml qui ressemble à celui la
    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
     
    <CV>
    <Nom></Nom>
    <Telephone></Telephone>
    <Email></Email>
    <Experience></Experience>
    <Date></Date>
    <Experience></Experience>
    <Date></Date>
    <Experience></Experience>
    <Date></Date>
    <Experience></Experience>
    <Date></Date>
    ....
    </CV>
    je veux récupérer les contenus des balises chacune dans un tableau de chaînes. J'ai essayé de faire ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    List listexp = element.getChildren("Experience");
     for(int i=0;i<listexp.size();i++)
     {tabex[i]=element.getChildText("Experience").getText(i);
     }
    mais ça n'a pas marché suite à une incompatibilité. S'il vous plaît aidez moi
    Cordialement

  2. #2
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 165
    Points : 137
    Points
    137
    Par défaut
    Mais ton Objet élément contient quoi ? CV ?

    essai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabex[i]= listexp.get(i). getText();

    ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // donne une liste de tout les Expériences
    element.getChildren("Experience");
     
    //donne le 1er élément de type Experience
    element.getChild("Experience")
     
    //donne le contenu texte du 1er élément de type Experience.
    element.getChildText("Experience")

  3. #3
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 165
    Points : 137
    Points
    137
    Par défaut
    en plus claire
    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
    //la racine de ton document est CV pour toi.
     Element racine = document.getRootElement();
     
    //Tu prends tous les elements Experience
    List<Element> listElements = racine.getChildren("Experience");
     
    //initialise ton tableau
    String [] tab = new String[listElements.size()]; 
     
    //ta boucle
    int i=0;
    for(Element element:listElements){
               tab[i]= element.getText();
    	i++;
    }

  4. #4
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Points : 52
    Points
    52
    Par défaut
    salut

    merci beaucoup ancrou vous m'avez aidé énormément
    mais le problème que pour la balise expérience c'est bon mais la balise date
    pour chaque expérience je cherche de récuprérer la deuxième balise car la
    première est la date de l'anniversaire. J'ai essayé de suivre votre code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    List<Element> listdat = (List<Element>) racine.getChildren("Date").get(1);
    //le tableau tabdat a la même taille que tableau d'expérience 
    tabdat =new String[listExp.size()];
    int j=0;
    for(Element ele:listdat){
               tabexp[j]= ele.getText();
     
    	j++;
    }
    mais ça n'a pas marché il a généré une exception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Exception in thread "main" java.lang.ClassCastException: org.jdom.Element cannot be cast to java.util.List
    J'attends votre aide.
    Cordialement

  5. #5
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 165
    Points : 137
    Points
    137
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    racine.getChildren("Date")
    donne un type List<Element>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    racine.getChildren("Date").get(1)
    donne un type Element qui est le 2ème Objet de la liste (apres le get(0)...)

  6. #6
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Points : 52
    Points
    52
    Par défaut
    j'ai fait ça mais il n'a pas accepté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     List<Element> listdat =  racine.getChildren("Date").get(1);

  7. #7
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 165
    Points : 137
    Points
    137
    Par défaut
    Essai donc ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    List<Element> listdat = (List<Element>) racine.getChildren("Date");
    //le tableau tabdat a la même taille que tableau d'expérience 
    tabdat =new String[listdat .size()];
    int j=0;
    //boucle qui parcourt tous les Elements de la liste, un par un
    for(Element element:listdat){
               tabdat [j]= element.getText();
     
    	j++;
    }
    Dans ton code tu essais de mettre un Objet de type Element dans une Liste d'Element.

  8. #8
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Points : 52
    Points
    52
    Par défaut
    ce code je l'ai essayé déjà il marche mais il récupère le champ date dés
    la première balise qui est la date de naissance c'est-à-dire la première expérience
    a pour date la date de naissance ce qui est foutue

  9. #9
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 165
    Points : 137
    Points
    137
    Par défaut
    tien donc, il y a une date de naissance
    Tu nous l'as pas dit ça !

    Je pense que ton schema XML est mal optimisé.

    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
    <CV>
        <Personne>
            <Nom>Marcel</Nom>
            <Telephone></Telephone>
            <Email></Email>
            <NeLe>25/12/00</NeLe>
        </Personne>
    <Experience>
            <Date></Date>
            <Detail></Detail>
    </Experience>
    <Experience>
            <Date></Date>
            <Detail></Detail>
    </Experience>
    <Experience>
            <Date></Date>
            <Detail></Detail>
    </Experience>
    ....
    </CV>
    En plus clair le fichier XSD vite fait:
    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
    <?xml version="1.0" encoding="UTF-8"?>
     
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://RH/CV"
        xmlns="http://RH/CV"
        elementFormDefault="qualified">
     
        <xsd:element name="cv" type="CV"/>
     
        <xsd:complexType name="CV">
            <xsd:sequence>
                <xsd:element name="personne" type="Personne"/>
                <xsd:element name="experience" type="Experience" maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>
     
        <xsd:complexType name="Personne">
            <xsd:sequence>
                <xsd:element name="nom" type="xsd:string" minOccurs="0"/>
                <xsd:element name="prenom" type="xsd:string" minOccurs="0"/>
            </xsd:sequence>
        </xsd:complexType>
     
        <xsd:complexType name="Experience">
                <xsd:sequence>
                    <xsd:element name="detail" type="xsd:string"/>
                    <xsd:element name="date" type="xsd:string"/>
                </xsd:sequence>
        </xsd:complexType>
     
     
    </xsd:schema>

  10. #10
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 165
    Points : 137
    Points
    137
    Par défaut
    sinon tu commences à lire la 2ème date comme la 1er est la Date de naissance !
    (c'est pas beau que c'est pas beau)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    List<Element> listdat = racine.getChildren("Date"); 
    int nbrExp = listdat .size();
    tabdat =new String[nbrExp -1];
    
    for(int j=0;j<nbrExp;j++) 
               tabdat [j]= listdat.get(j+1).getText();
     
    }

  11. #11
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Points : 52
    Points
    52
    Par défaut
    voila le fichier de départ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <CV>
    <Nom></Nom>.......
    <date></date>
    <experience><experience>
    <date></date>
    <experience><experience>
    <date></date>.............
    </CV>
    la date de naissance est facilement récupérée mais mon problème c'est la liste
    des dates des expériences comment procéder par le 2ème élément

  12. #12
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 165
    Points : 137
    Points
    137
    Par défaut
    Citation Envoyé par soumti84 Voir le message
    voila le fichier de départ

    la date de naissance est facilement récupérée mais mon problème c'est la liste
    des dates des expériences comment procéder de 2ème élément
    Soit tu restructure ton fichier XML comme dans mon post de 17h42
    Soit tu fais le for de mon poste de 17h50

    Soit tu changes le nom de la 1er date en <DateDeNaissance>

  13. #13
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Points : 52
    Points
    52
    Par défaut

    waaaaaaaaaaaaaaaaaaaaaaaaaw merci merci merci ancrou
    merci pour votre effort
    ça marche enfin grâce à votre serviabilité
    j'ai pas changé la balise mais le code marche enfin

  14. #14
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 165
    Points : 137
    Points
    137
    Par défaut
    de rien
    Moi personne à répondu à mon problème

  15. #15
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Points : 52
    Points
    52
    Par défaut
    Quel est ton problème??

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/07/2015, 17h22
  2. [RegEx] Récupérer contenu balise dans un tableau
    Par Darkcristal dans le forum Langage
    Réponses: 4
    Dernier message: 13/12/2008, 21h07
  3. copie de contenu de cellule dans un tableau
    Par levac dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/05/2007, 16h12
  4. [SAX] Mauvaise récupération du contenu des balises
    Par DC dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 19/02/2007, 11h08

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