Interrogation sur l'utilisation de la source "XPathUtils"
Bonjour à tous,
Je cherche à me familiariser avec XPath.
J'ai trouvé une source intéressante à cet endroit : http://java.developpez.com/sources/?page=xml#XPathUtils.
La méthode getXPath(Node node) me serait grandement utile puisqu'elle renvoie une chaîne contenant une expression XPath permettant d'accéder au noeud passé en paramètre.
Cependant, je ne parviens pas à trouver la manière dont je peux instancier un node pour le fournir à cette méthode.
La solution est probablement toute bête mais je n'ai pas mis le doigt dessus. Quelqu'un peut-il m'éclairer sur le sujet ?
Merci d'avance.
Une exemple d'utilisation
Salut,
voici un petit test.
fichier xml
Code:
1 2 3 4 5 6 7 8
|
<racine>
<fils1>
<petit-fils1>valeur de fils1/petit-fils1</petit-fils1>
<petit-fils2>valeur de fils1/petit-fils2</petit-fils2>
</fils1>
<fils2>valeur de fils2</fils2>
</racine> |
la classe de test
Code:
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
| import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import java.io.FileInputStream;
public class TestXPath
{
public static void main(String[] args)
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
Document doc = null;
Element root = null;
String xmlFile = "test.xml";
try{
builder = factory.newDocumentBuilder();
doc = builder.parse(new FileInputStream(xmlFile));
root = doc.getDocumentElement();
NodeList listEnfants = root.getChildNodes();
for (int i = 0; i < listEnfants.getLength(); i++)
{
System.out.println(XPathUtils.getXPath(listEnfants.item(i)));
}
} catch (Exception e) {
e.printStackTrace();
}
}
} |
Le résultat obtenu est le suivant :
/racine/text()[1]
/racine/fils1[1]
/racine/text()[2]
/racine/fils2[1]
/racine/text()[3]
Mais tout de même, le résultat me parait un peu bizarre, donc je crois que quelque chose doit être changé.
Donc, grossomodo, on crée un DocumentBuilderFactory, puis on récupère un DocumentBuilder, et on parse le fichier xml, ce qui nous donne un Document, ensuite on récupère la racine (Element), et enfin on récupère un NodeList qui contient tous les Node enfants de l'Element racine (getChildNodes()) et on boucle dessus.
Voilà, j'espère que ça aidera, et puis pense à jeter un oeil à la faq xml_java