J'ai le document suivant :
<a>
<bb>abc</bb>
<cc>ccc</cc>
<dd>ddd</dd>
</a>
<a>
<bb>zz</bb>
<cc>1</cc>
<dd>2</dd>
</a>
Comment puis-je obtenir la valeur de <cc>
en utilisant XPath si <bb>
es zz
?
J'ai le document suivant :
<a>
<bb>abc</bb>
<cc>ccc</cc>
<dd>ddd</dd>
</a>
<a>
<bb>zz</bb>
<cc>1</cc>
<dd>2</dd>
</a>
Comment puis-je obtenir la valeur de <cc>
en utilisant XPath si <bb>
es zz
?
Ce dont vous avez besoin, c'est following-sibling
Axe XPath
//a/bb[text()="zz"]/following-sibling::cc[1]/text()
Testez le Xpath ici : http://www.xpathtester.com/obj/b55ec3ac-dfa4-4f44-81e8-f963ea4a0625
Q : Comment sélectionner un nœud en utilisant XPath si le nœud frère a une valeur spécifique ?
Comme il n'existe que des "axes XPath" pour les frères et sœurs suivants et les frères et sœurs précédents, vous pouvez utiliser l'un d'entre eux si la position est fixe.
Mais mieux : Cherchez cc
où le parent a un enfant bb
avec valeur 'zz'
:
//cc[../bb='zz']
Tout d'abord, votre exemple n'est pas un XML bien formé. Sans tenir compte de cela et du fait que vous n'avez pas très bien décrit vos intentions (que voulez-vous exactement sélectionner et à quelle condition ?), je suppose que vous voulez faire ceci :
//cc[preceding-sibling::bb[text()="zz"]]/text()
Il sélectionne
TEXT VALUES OF ALL <CC> ELEMENTS
//cc /text()
THAT HAVE A PRECEDING SIBLING <BB>
[preceding-sibling::bb ]
THAT HAS TEXT VALUE EQUAL TO "zz"
[text()="zz"]
Vous pouvez aussi l'écrire comme
//bb[text()="zz"]/following-sibling::cc/text()
Veuillez consulter la spécification il contient des textes très lisibles exemples dont vous apprendrez beaucoup.
Une autre solution pour ce problème est
//bb[contains(.,'zz')]/../cc/text()
Explication : Tout bb
qui contient 'zz'
dans tous les noeuds enfants de bb
puis aller au noeud parent de ce bb
en utilisant ..
maintenant que nous pouvons accéder au cc
donc retour du texte.
J'espère que cette explication n'est pas complexe.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.