XPath - récupérer plusieurs valeurs à partir des chemins différents, basés sur la même condition
C'est mon XML
<root>
<entry id="1">
<value name="ID">11</value>
<value name="ENABLE">0</value>
<value name="NAME">USER1</value>
</entry>
<entry id="2">
<value name="ID">11</value>
<value name="ENABLE">0</value>
<value name="NAME">USER2</value>
</entry>
<entry id="3">
<value name="ID">12</value>
<value name="ENABLE">0</value>
<value name="NAME">USER1</value>
</entry>
</root>
J'ai besoin d'une requête XPath pour récupérer tous les noms dont id
est 11.
J'ai essayé:
String xpath = "/root/entry/value[@name=ID/text()='11']/value[@name='NAME']";
String xpath = "/root/entry/value[@name=ID/text()='11']/NAME";
Quelqu'un peut me dire quel est le problème dans ma requête?
EDIT:
Résultat Attendu:
USER1
USER2
ces deux ID = 11
- Merci de préciser avec des exemples de résultats attendus. Qu'entendez-vous par retour de tous les "noms"?
- Ma sortie attendue est USER1 et USER2 puisque les deux ont ID=11
- Veuillez voir mon post pour le code Java nécessaire pour accéder à toutes les paires de nœuds au lieu de simplement la première.
Vous devez vous connecter pour publier un commentaire.
Ce serait le chemin d'accès correct:
Pour récupérer une liste de nœuds, vous devez utiliser la version de xPath.evaluate() qui prend un returnType paramètre:
ou
ou
ou
ou de nombreuses autres variantes
Utilisation:
XSLT vérification basée sur les:
lorsque cette transformation est appliquée sur le document XML fourni par le:
l'expression XPath est évaluée et le résultat de cette évaluation (tous les nœuds sélectionnés) est copié à la sortie:
evaluate()
probablement l'Objet -- et doit être jeté d'une liste de nœuds. Votre erreur, c'est que vous êtes en l'assignant à une Chaîne. Je ne sais pas ce que XPath API que vous utilisez (le PL semble Java) - s'il vous plaît, lisez bien la documentation et l'examen de toute disposition des exemples de code, de sorte que vous pouvez corriger votre code actuel.essayer cela,
Chaîne de xpath = "/root/entrée[valeur[@name='ID' et text()='11']]/valeur[@name="NOM"]";
Utilisation: