J'ai un petit problème avec XPath contains avec dom4j ...
Disons que mon XML est
<Home>
<Addr>
<Street>ABC</Street>
<Number>5</Number>
<Comment>BLAH BLAH BLAH <br/><br/>ABC</Comment>
</Addr>
</Home>
Disons que je veux trouver tous les noeuds qui ont ABC dans le texte donné à l'élément racine...
Donc le XPath que j'aurais besoin d'écrire serait
//*[contains(text(),'ABC')]
Cependant, ce n'est pas ce que renvoie dom4j ..... Est-ce un problème de dom4j ou une mauvaise compréhension du fonctionnement de XPath, puisque cette requête ne renvoie que l'élément Street
et non l'élément Comment
élément ?
Le DOM fait le Comment
élément un élément composite avec quatre balises deux
[Text = 'XYZ'][BR][BR][Text = 'ABC']
Je suppose que la requête devrait toujours renvoyer l'élément puisqu'elle devrait trouver l'élément et exécuter contains sur lui, mais ce n'est pas le cas...
La requête suivante renvoie l'élément, mais elle renvoie bien plus que l'élément - elle renvoie également les éléments parents, ce qui n'est pas souhaitable pour le problème.
//*[contains(text(),'ABC')]
Est-ce que quelqu'un connaît la requête XPath qui renverrait seulement les éléments <Street/>
y <Comment/>
?
0 votes
D'après ce que je sais,
//*[contains(text(),'ABC')]
ne renvoie que le<Street>
élément. Elle ne renvoie pas d'ancêtres de<Street>
o<Comment>
.