XPath può corrispondere a parti del nome di un elemento?
Domanda
Voglio farlo:
//*fu
che restituisce tutti i nodi il cui nome termina con fu, ad esempio <tarfu />
E <snafu />
, ma no <fubar />
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"