2008-09-05 6 views

Répondre

34

Do quelque chose comme:

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

Pour une bonne référence XPath, consultez le W3Schools tutorial.

+4

Ceci est une solution XPath 2.0 uniquement. –

+0

Notez que vous pouvez utiliser 'local-name()' pour omettre les espaces de noms dans XML complexe – LostNomad311

42

Cette réponse est pour XPath 1.0 où il n'y a aucun équivalent du XPath 2.0 standard ends-with() function.

L'expression XPath 1.0 suivant sélectionne tous les éléments du document XML, dont le nom se termine par la chaîne « fu »:

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

je me débattais avec la réponse de Dimitre Novatchev, il ne retournerait pas les matchs. Je savais que votre XPath doit avoir une section disant que "fu" a une longueur de 2.

Il est conseillé d'avoir une longueur de chaîne ('fu') pour déterminer ce qu'il faut sous-porter.

Pour ceux qui ne sont pas en mesure d'obtenir des résultats avec sa réponse et ils ont besoin solution avec XPath 1.0:

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

des éléments trouve des correspondances se terminant par "fu"

ou

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

correspond aux éléments Finds se terminant par "Position"