Je veux faire:Est-ce que XPath peut correspondre sur des parties du nom d'un élément?
// * fu
qui retourne tous les nœuds dont le nom se termine dans fu, comme <tarfu />
et <snafu />
, mais pas <fubar />
Je veux faire:Est-ce que XPath peut correspondre sur des parties du nom d'un élément?
// * fu
qui retourne tous les nœuds dont le nom se termine dans fu, comme <tarfu />
et <snafu />
, mais pas <fubar />
Do quelque chose comme:
//*[ends-with(name(), 'fu')]
Pour une bonne référence XPath, consultez le W3Schools tutorial.
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']
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"
Ceci est une solution XPath 2.0 uniquement. –
Notez que vous pouvez utiliser 'local-name()' pour omettre les espaces de noms dans XML complexe – LostNomad311