Aide pour jdom

monpseudonom Messages postés 38 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 24 février 2010 - 6 mai 2008 à 01:27
bensFouad Messages postés 39 Date d'inscription lundi 16 avril 2007 Statut Membre Dernière intervention 11 mai 2008 - 6 mai 2008 à 23:31
Salut.
J'ai un fichier qui a la structure suivante:
<element>
<type>type</type>
<x>12</x>
<tag>
<name>nom</name>
<value>valeur</valeur>
</tag>
</element>

sachant que le nombre de balise <tag> est varaible.Ce que je veux c'est de recuperer les valeurs des balise name et value pour tous les balises tag.Pour cela,j'ai utilisé ce bout de code:

Iterator i = listElement.iterator();
while(i.hasNext())
{

Element courant = (Element)i.next();

List listTag = courant.getChildren("tag"...
Iterator j = listTag.iterator();
int d=0;
while(j.hasNext())
{
Element tag = (Element)j.next();

ch[d]=tag.getChild("name"...
ch1[d]=tag.getChild("valu...
cellAct.tagName[d]=ch;
cellAct.tagValue[d]=ch1;
d++;

System.out.println("namet... "+ch);
}

mais le pb que j'obtien l'exception NullPointerException
qui pointe sur la ligne ch[d]=tag.getChild("name"...
Merci pour votre aide.

}

3 réponses

bensFouad Messages postés 39 Date d'inscription lundi 16 avril 2007 Statut Membre Dernière intervention 11 mai 2008
6 mai 2008 à 01:47
Salut,
Ton code n'est pas lisible du tout!!, essaye ce code la :

List list = racine.getChildren("tag");
Iterator it = list.iterator();
while (i.hasNext()) {
Element courant = (Element) it.next();
System.out.println(courant.getChild("name").getText());
System.out.println(courant.getChild("value").getText());
}
a+
0
monpseudonom Messages postés 38 Date d'inscription jeudi 21 février 2008 Statut Membre Dernière intervention 24 février 2010
6 mai 2008 à 23:04
Salut,


merci pour ta reponse.


mais le probleme que je suis trompé pour la structure du fichier xml.


Voici la structure exacte:

<diagram>
<element>
<type>type</type>
<x>12</x>
<tag>
<name>nom</name>
<value>valeur</valeur>
</tag>
</element>
</diagram>

Sachant que le nombre de balises element est varaible de meme pour le nombre de balise tag.
Merci.


 
0
bensFouad Messages postés 39 Date d'inscription lundi 16 avril 2007 Statut Membre Dernière intervention 11 mai 2008
6 mai 2008 à 23:31
Salut,
ok, j'ai compris, essaye ça,en tous ca ça marche chez moi, supposons qu'on a ton fichier xml (je l'ai nommé Exemple.xml) ressemble à ça :
<diagram>
    <element>
        <type>type</type>
        <x>12</x>
        <tag>
            <name>nom</name>
            <value>valeur</value>
        </tag>
        <tag>
            <name>nom2</name>
            <value>valeur2</value>
        </tag>
    </element>
    <element>
        <type>type2</type>
        <x>17</x>
        <tag>
            <name>nom3</name>
            <value>valeur3</value>
        </tag>
        </element>
   
</diagram>
Le code suivant doit marcher, et affichera dans la console :
nom
valeur
nom2
valeur2
nom3
valeur3
CODE:
import java.io.File;
import java.util.Iterator;
import java.util.List;

import org.jdom.Element;
import org.jdom.input.SAXBuilder;

public class TestExempleXML {
    static org.jdom.Document document;
    static Element racine;

    public static void main(String[] args) {

        SAXBuilder sxb = new SAXBuilder();
        try {

            document = sxb.build(new File("Exemple.xml"));
        } catch (Exception e) {
        }

        racine = document.getRootElement();
        List list = racine.getChildren("element");
        Iterator it = list.iterator();
        while (it.hasNext()) {
        Element courant = (Element) it.next();
        List list2 = courant.getChildren("tag");
        Iterator it2 = list2.iterator();
        while(it2.hasNext()){
            Element element = (Element)it2.next();
            System.out.println(element.getChild("name").getText());
            System.out.println(element.getChild("value").getText());
        }
       
        }

    }

}
0
Rejoignez-nous