Non so perché query seguente non funziona:query XPath per selezionare tutti gli attributi href di <a> tag, che attributo 'classe' è uguale specificato stringa
//a/@href[@class='specified_string']
Non so perché query seguente non funziona:query XPath per selezionare tutti gli attributi href di <a> tag, che attributo 'classe' è uguale specificato stringa
//a/@href[@class='specified_string']
Prova ora il contrario:
//a[@class='specified_string']/@href
Dopo tutto, class
è un attributo dell'elemento <a>
, non un attributo dell'attributo href
.
Sì, penso che funzioni, ma il problema è che la query restituisce gli attributi e voglio recuperare i valori degli attributi. Lo sto scrivendo in Java e mi ha restituito NodeList di lunghezza 2. Quando provo a stamparlo, stampa solo due intestazioni xml: Xml version = "1.0" encoding = "UTF-8"?>< ? xml version = "1.0" encoding = "UTF-8"?> due e ci sono solo due link che la query corrisponderà, quindi sembra funzionare. Ma voglio ottenere i valori di questi hrefs. Come farlo? – l245c4l
That 'NodeList' dovrebbe contenere l'elenco di' Node's che rappresenta gli attributi 'href'. Quindi, l'esecuzione di 'getNodeValue()' su quei nodi dovrebbe darti i valori di 'href' attributes. – ndim
Questo non funziona nel mio caso, anche se penso che sia assolutamente giusto. Il mio Chrome può usare '// a [@ name =" topic "]' per estrarre gli elementi a destra. Ma // // a [@ name = "topic"]/@ href' restituisce una lista di [,,,,,] come se non ci fosse un attributo href.Questo è un "elemento" come esempio: XXX – Skywalker326
In pratica si dice che si sta cercando un attributo denominato href
, il cui attributo (questo è l'errore) class
deve essere uguale a specified_string
.
, ma è necessario trovare l'attributo href
di un elemento a
, il cui attributo class
è specified_string
.
(risposta di Ndim sovrapposta miniera)
Un attributo non può avere gli attributi. Solo gli elementi possono avere attributi.
L'espressione originale XPath:
//a/@href[@class='specified_string']
seleziona qualsiasi href
attributo di qualsiasi elemento a
, tale che l'attributo href
ha un attributo class
cui valore è 'specified_string'
.
quello che vuoi è:
//a[@class='specified_string']/@href
che è: l'attributo href
di qualsiasi elemento a
che ha class
atribute con valore 'specified_string'
.
Non c'è un attributo di classe presente nel tag di ancoraggio Ho solo href. Viene identificato utilizzando //*[@href='value']
ma //*a[@href='value']
non funziona
Poiché l'attributo di classe può contenere più nomi di classe separati da spazi, probabilmente si desidera effettivamente: '// a [contains (concat ('', normalize-space (@class) , ''), 'some_class_name')]/@ href' – singpolyma
@singpolyma: buon punto. Solo un nitpick: è ''some_class_name'' (con spazi intorno), * not * ''some_class_name''. – kmkaplan