Domanda

Voglio farlo:

//*fu

che restituisce tutti i nodi il cui nome termina con fu, ad esempio <tarfu /> E <snafu />, ma no <fubar />

È stato utile?

Soluzione

Fai qualcosa del tipo:

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

Per un buon riferimento XPath, controlla W3Schools.

Altri suggerimenti

Questa risposta è per XPath 1.0 dove non esiste alcun equivalente di Funzione Ends-With() standard di XPath 2.0.

La seguente espressione XPath 1.0 seleziona tutti gli elementi del documento xml, i cui nomi terminano con la stringa "fu":

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

Ho faticato con la risposta di Dimitre Novatchev, non restituiva le partite.Sapevo che il tuo XPath doveva avere una sezione che indicava che "fu" ha lunghezza 2.

Si consiglia di avere una stringa-lunghezza('fu') per determinare cosa sottostringa.

Per coloro che non riescono a ottenere risultati con la sua risposta e richiedono una soluzione con xpath 1.0:

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

Trova corrispondenze di elementi che terminano con "fu"

O

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

Trova corrispondenze con elementi che terminano con "Posizione"

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top