Sélection et recherche par XPath
Le parcours d'un arbre peut également se faire à l'aide d'XPath. Il faut pour cela utiliser le package javax.xml.xpath.*
Exemple : Création d'un Objet XPath
Méthode :
Trois possibilités :
Lecture d'une chaîne de caractères
Lecture d'un nœud
Lecture d'une liste de nœuds
Exemple : Parsing du fichier XML avec XPath - Lecture d'une chaîne de caractères
CTRL+C pour copier, CTRL+V pour coller
1
<racine>
2
<balise1>
3
<MonTag>Tag1</MonTag>
4
<MonTag>Tag2</MonTag>
5
</balise1>
6
<balise2>
7
<sousBalise2>
8
<MonTag>Tag3</MonTag>
9
<MonTag>Tag4</MonTag>
10
</sousBalise2>
11
</balise2>
12
</racine>
<racine> <balise1> <MonTag>Tag1</MonTag> <MonTag>Tag2</MonTag> </balise1> <balise2> <sousBalise2> <MonTag>Tag3</MonTag> <MonTag>Tag4</MonTag> </sousBalise2> </balise2> </racine>
CTRL+C pour copier, CTRL+V pour coller
1
try
2
{
3
String expression = null;
4
5
//lecture d'une chaîne de caractère
6
expression = "/racine/balise1/MonTag";
7
String maChaine = xPath.compile(expression).evaluate(document);
8
System.out.println(maChaine+"\n");
9
}
10
catch (XPathExpressionException e)
11
{
12
System.out.println("Erreur dans le XPath");
13
e.printStackTrace();
14
}
try { String expression = null; //lecture d'une chaîne de caractère expression = "/racine/balise1/MonTag"; String maChaine = xPath.compile(expression).evaluate(document); System.out.println(maChaine+"\n"); } catch (XPathExpressionException e) { System.out.println("Erreur dans le XPath"); e.printStackTrace(); }
Exemple : Parsing du fichier XML avec XPath - Lecture d'un nœud
CTRL+C pour copier, CTRL+V pour coller
1
<racine>
2
<balise1>
3
<MonTag>Tag1</MonTag>
4
<MonTag>Tag2</MonTag>
5
</balise1>
6
<balise2>
7
<sousBalise2>
8
<MonTag>Tag3</MonTag>
9
<MonTag>Tag4</MonTag>
10
</sousBalise2>
11
</balise2>
12
</racine>
<racine> <balise1> <MonTag>Tag1</MonTag> <MonTag>Tag2</MonTag> </balise1> <balise2> <sousBalise2> <MonTag>Tag3</MonTag> <MonTag>Tag4</MonTag> </sousBalise2> </balise2> </racine>
CTRL+C pour copier, CTRL+V pour coller
1
try
2
{
3
String expression = null;
4
5
//lecture d'un noeud
6
expression = "/racine/balise1";
7
Node node = (Node) xPath.compile(expression).evaluate(document, XPathConstants.NODE);
8
System.out.println(((Element) node).getFirstChild().getTextContent()+"\n");
9
}
10
catch (XPathExpressionException e)
11
{
12
System.out.println("Erreur dans le XPath");
13
e.printStackTrace();
14
}
try { String expression = null; //lecture d'un noeud expression = "/racine/balise1"; Node node = (Node) xPath.compile(expression).evaluate(document, XPathConstants.NODE); System.out.println(((Element) node).getFirstChild().getTextContent()+"\n"); } catch (XPathExpressionException e) { System.out.println("Erreur dans le XPath"); e.printStackTrace(); }
Exemple : Parsing du fichier XML avec XPath - Lecture d'une liste de nœuds
CTRL+C pour copier, CTRL+V pour coller
1
<racine>
2
<balise1>
3
<MonTag>Tag1</MonTag>
4
<MonTag>Tag2</MonTag>
5
</balise1>
6
<balise2>
7
<sousBalise2>
8
<MonTag>Tag3</MonTag>
9
<MonTag>Tag4</MonTag>
10
</sousBalise2>
11
</balise2>
12
</racine>
<racine> <balise1> <MonTag>Tag1</MonTag> <MonTag>Tag2</MonTag> </balise1> <balise2> <sousBalise2> <MonTag>Tag3</MonTag> <MonTag>Tag4</MonTag> </sousBalise2> </balise2> </racine>
CTRL+C pour copier, CTRL+V pour coller
1
try
2
{
3
String expression = null;
4
5
//lecture d'une liste de noeuds
6
expression = "//MonTag";
7
NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(document, XPathConstants.NODESET);
8
Element element = null;
9
for(int i=0; i<nodeList.getLength(); i++)
10
{
11
element = (Element) nodeList.item(i);
12
System.out.println(element.getTextContent());
13
}
14
15
}
16
catch (XPathExpressionException e)
17
{
18
System.out.println("Erreur dans le XPath");
19
e.printStackTrace();
20
}
try { String expression = null; //lecture d'une liste de noeuds expression = "//MonTag"; NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(document, XPathConstants.NODESET); Element element = null; for(int i=0; i<nodeList.getLength(); i++) { element = (Element) nodeList.item(i); System.out.println(element.getTextContent()); } } catch (XPathExpressionException e) { System.out.println("Erreur dans le XPath"); e.printStackTrace(); }