Bonjour,

But : A partir d un fichier xml et d'un xpath je cherche à extraire :
- une valeur
- son xpath

Vous me direz que j'ai deja le xpath, cependant dans mon cas je veux le xpath specifique à chaque donnée et non le xpath donnée pour la recherche.

exemple :

données initiales :
xml : <xml><test><bob>1.0</bob><tod>2.0</tod></test></xml>
xpath : /xml/test/*
Resultat :
{ /xml/test/bob , 1.0 }
{ /xml/test/tod , 2.0 }
Code

A l'aide de la lib javax.xml, j'arrive à extraire à partir de mon xpath, une NodeList me permetant d'obtenir le contenu de chacun des noeuds.

Cependant je ne trouve pas de methode me permetant à partir d'un object Node d'obtenir son Xpath, quelqu'un a t il une piste ? une autre lib ?

J'ai directement exclu la piste de faire une méthode consistant à remonter noeud par noeud jusqu'à la racine et en extraire au fur et à mesure les informations. Il doit surement exister une méthode qui fait déjà cela.

Merci.

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
 
public static void evaluerDOM(InputStream is, String expression){
		NodeList liste = evaluer(is,expression);
 
		if(liste != null){
			for(int i=0 ; i < liste.getLength() ; i++){
				Node node = liste.item(i);
				System.out.println("node  : " + node.getTextContent());
			}
		}
	}
 
public static NodeList evaluer(InputStream stream, String expression){
		NodeList liste = null;
		try{
			//création de la source
			InputSource source = new InputSource(stream);
 
			//création du XPath 
			XPathFactory fabrique = XPathFactory.newInstance();
			XPath xpath = fabrique.newXPath();
 
			//évaluation de l'expression XPath
			XPathExpression exp = xpath.compile(expression);
			liste = (NodeList)exp.evaluate(source,XPathConstants.NODESET);
		}catch(XPathExpressionException xpee){
			xpee.printStackTrace();
		}
		return liste;
	}