XPath peut-il correspondre à certaines parties du nom d'un élément ?

StackOverflow https://stackoverflow.com/questions/46125

  •  09-06-2019
  •  | 
  •  

Question

Je veux faire ça:

//*fu

qui renvoie tous les nœuds dont le nom se termine par fu, tel que <tarfu /> et <snafu />, mais non <fubar />

Était-ce utile?

La solution

Faites quelque chose comme :

//*[ends-with(name(), 'fu')]

Pour une bonne référence XPath, consultez W3Écoles.

Autres conseils

Cette réponse est pour XPath 1.0 où il n'existe pas d'équivalent Fonction XPath 2.0 standard se termine par ().

L'expression XPath 1.0 suivante sélectionne tous les éléments du document XML dont les noms se terminent par la chaîne « fu » :

//*[substring(name(),string-length(name())-1) = 'fu']

J'ai eu du mal avec la réponse de Dimitre Novatchev, cela ne renverrait pas de matchs.Je savais que votre XPath devait avoir une section indiquant que "fu" avait une longueur de 2.

Il est conseillé d'avoir une longueur de chaîne ('fu') pour déterminer quoi sous-chaîner.

Pour ceux qui ne parviennent pas à obtenir des résultats avec sa réponse et qui ont besoin d'une solution avec XPath 1.0 :

//*[substring(name(), string-length(name()) - string-length('fu') +1) = 'fu']

Recherche les correspondances d'éléments se terminant par "fu"

ou

//*[substring(name(), string-length(name()) - string-length('Position') +1) = 'Position']

Recherche les correspondances avec les éléments se terminant par « Position »

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top