Récupérer les informations des nœuds parents
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:
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:
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 ?