xPath: Sélectionner l'élément parent seulement si l'enfant de l'élément ne contient pas une certaine valeur
Donné ceci:
<element_1>
<element_2>Text</element_2>
<element_3>
<element_4>
<element_5>Text with @ in Value</element_5>
</element_4>
<element_4>
<element_5>Test Text</element_5>
</element_4>
</element_3>
<element_6>
<element_7>
<element_8>0</element_8>
...
Comment puis-je sélectionner toutes les instances de element_1 qui ne pas contenir un '@' dans element_5?
Bonne question (+1). Voir ma réponse pour une expression XPath qui permet de sélectionner tous les éléments requis dans n'importe quel document -- lorsque la structure du document n'est pas connu à l'avance.
OriginalL'auteur Snekse | 2010-10-01
Vous devez vous connecter pour publier un commentaire.
Ceci est interprété comme
Dépend si vous voulez faire correspondre element_1 à n'importe quel niveau, ou si c'est toujours la racine de la DOM.
Notez également que cette solution suppose que element_5 est toujours directement sous element_4, qui à son tour est toujours directement sous element_3, qui à son tour est toujours directement sous element_1. Les deux autres solutions supposent que element_5 peut apparaître à n'importe quel niveau au-dessous de element_1.
Merci. Je n'ai pas pu tester encore, mais je pense que je peut le comprendre à partir d'ici, si cela ne fonctionne pas.
+1 pour ne pas utiliser de
//
de l'opérateur.OriginalL'auteur Welbog
Mon XPath est un peu rouillé, mais quelque chose comme ceci:
//
de l'opérateur lorsque le schéma est bien connu...C'est très bien. L'OP n'est pas spécifique à ce sujet.
Pourquoi le bas-grade? Au moins avoir la décence de laisser un message expliquant pourquoi vous avez en bas du classement, qui que vous soyez.
OriginalL'auteur dty
Utilisation:
En anglais, cela signifie: Sélectionnez tous les
"element_1"
les éléments du document qui n'ont pas de"element_5"
descendant dont la chaîne de valeur contient la chaîne de caractères'@'
.Je suis en utilisant le
//
abréviation seulement parce que la structure du fichier XML n'est pas clair.J'ai toujours recommandé d'éviter d'utiliser le
//
abréviation toujours quand c'est possible, parce que sinon, cela peut entraîner dans de très inefficace XPath de l'évaluation.OriginalL'auteur Dimitre Novatchev
OriginalL'auteur John Kugelman