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 :
Resultat :xml : <xml><test><bob>1.0</bob><tod>2.0</tod></test></xml>
xpath : /xml/test/*
Code{ /xml/test/bob , 1.0 }
{ /xml/test/tod , 2.0 }
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 bien 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; }
Partager