JDOM : recherche d'éléments dans un arbre XML

newfsch Messages postés 6 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 29 juillet 2008 - 8 avril 2004 à 20:46
hamma2 Messages postés 18 Date d'inscription jeudi 10 septembre 2009 Statut Membre Dernière intervention 3 décembre 2004 - 3 déc. 2004 à 13:09
Bonjour,

j'utilise JDOM pour traiter des documents XML.

Ma question est la suivante :

Comment se posiitionner ou sélectionner un ou des éléments pas leur nom de balise ou d'attribut dans un arbre JDOM ? Méthodes, classes utilisées ?

Merci pour votre réponse.

3 réponses

sleep Messages postés 68 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 10 mai 2007
9 avril 2004 à 09:15
Il y a moults façon de sélectionner un element dans un arbre DOM.

A partir du Document (l'arbre qui represente ton xml), tu peux appeler la méthode - getRootElement() qui va renvoyer un objet Element, correspondant à la racine de cet arbre.

Depuis la classe Element, tu peux appeler les méthodes:
- element (String) : renvoi le premier element fils de ton element dont le nom corresponds a la String passée en paramètre.
- elements (String) : pareil mais revoi tous les elements fils dans une liste.
- attribute (String) : renvoi un objet de type Attribute correspondant au noeud fils attribut de l'element correspondant au nom donné en paramètre
- attributeValue() : renvoi la valeur de l'attribut correspondant au nom donné en paramètre sous la forme d'une String

Apres il existe des methodes bien plus subtiles en passant par les selectNodes et le système de XPath.

Imagine ton arbre DOM comme une arborescence de fichiers, et tout comme il est possible d'acceder a un fichier par son path, il est egalement possible d'atteindre n'importe quel noeud de ton arbre par un path (xpath).

Tous les noeuds de l'arbre, quel que soit leur type (Element, Attribute, meme le Document lui meme...) héritent de l'interface Node, et cette interface possède plusieurs méthodes tres utiles:
- selectNodes(String): la string donné ici corresponds au xpath de l'element, et cette fonction renvoi tous les noeuds correspondant a ce path (contrairement a un systeme de fichier, ici plusieurs noeuds peuvent avoir le meme path) typiquement, un selectNodes("/racine/filsracine") sur le Document representant le fichier suivant:

<racine>
<filsracine> <!-- noeud choisi -->
<toto/>
</filsracine>
<filsracine> <!-- noeud choisi -->
<titi/>
</filsracine>
</racine>

tandis qu'un selectNodes("/racine/filsracine/titi") :

<racine>
<filsracine>
<toto/>
</filsracine>
<filsracine>
<titi/> <!-- noeud choisi -->
</filsracine>
</racine>

tu disposes dans tous les cas d'une List (de Node),meme si un seul element correspond au path; que tu es libre d'iterer pour traiter.

Pour acceder aux attributs d'un Node tu peux utiliser la méthode - valueOf("@"+ "nom_de_l_attribut")

Voila les bases, apres je te conseille d'aller voir les sites specialisé, deja la doc de l'api en question: http://www.dom4j.org/apidocs/allclasses-noframe.html

Un cours sur le xpath:
http://jerome.developpez.com/xmlxsl/xpath/

Voila qui est bien pour commencer...
0
newfsch Messages postés 6 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 29 juillet 2008
9 avril 2004 à 09:54
Merci beaucoup de toutes tes indications.

Je vais voir cela.

Peut-être a tu fait une erreur sur le nom de certaines méthodes (Element), tu voulais peut-être indiquer dans le paquage org.jdom :

- Element.getChild(nom_balise) pour obtenir un élement fils
- Element.getChildren(nom_balise) pour obtenir les éléments fils
- Element.getAttribute(nom_attribut) pour obtenir un attribut
- Element.getAttributeValue(nom_attribut) pour obtenir la valeur d'un attribut

J'ai vu également qu'il existe une méthode :
Element.getAttributes() qui permet de renvoyer la liste de tous les attributs d'un élement

A +
0
hamma2 Messages postés 18 Date d'inscription jeudi 10 septembre 2009 Statut Membre Dernière intervention 3 décembre 2004
3 déc. 2004 à 13:09
Bonjour,
comment je peux accéder à un élément frère d'un élément dans un arbre XML avec JDOM, sans utilisation du DOM.
Merci.
0
Rejoignez-nous