Salut,
Un flux représente un annuaire téléphonique. Les contacts sont répartis dans des services, eux-même répartis dans des sociétés.
Code xml : 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 <?xml version="1.0" encoding="UTF-8"?> <annuaire xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="personne.xsd"> <societe nom="soc_a"> <service nom="serv_a"> <contact> <nom>nomPers_a</nom> <prenom>prenomPers_a</prenom> <num_tel>123456</num_tel> </contact> <contact> <nom>nomPers_b</nom> <prenom>prenomPers_b</prenom> <num_tel>321654</num_tel> </contact> </service> <service nom="serv_b"> <contact> <nom>nomPers_c</nom> <prenom>prenomPers_c</prenom> <num_tel>123456</num_tel> </contact> <contact> <nom>nomPers_d</nom> <prenom>prenomPers_d</prenom> <num_tel>321654</num_tel> </contact> </service> </societe> </annuaire>
Je dois intégrer ces données dans une base. Je dois récupérer les contacts (nom, prénom, num_tel), mais aussi le service et la société d'appartenance.
Par exemple, je dois récupérer toutes les contacts de la société A. Pour cela, j'utilise XPath :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 XPathFactory xPathFact = XPathFactory.newInstance(); XPath xpath = xPathFact.newXPath(); XPathExpression exp = xpath.compile("//annuaire/societe[@nom='soc_a']/service/contact"); NodeList liste = (NodeList) exp.evaluate(documentXml, XPathConstants.NODESET);
J'ai donc une liste de Node. Ma question est : Comment récupérer les informations des nœuds parents (en particulier les attributs comme "serv_a", "soc_a") ?
En réalité, mon document XML contient beaucoup plus de niveaux (région mondiale, niveau hiérarchique, etc.) Par conséquent, j'aimerais éviter l'utilisation de getParentNode(), surtout si le schéma XML est amené à évoluer...
N'y-a-t-il pas moyen d'utiliser XPath sur un Node ?
Partager