Tester XPath
Documento XML o HTML
Incolla XML o HTML fino a 1.000.000 di caratteri. La valutazione avviene in questo browser con XPath 1.0.
XPath 1.0 assoluto o relativo. I prefissi dichiarati nel documento vengono registrati automaticamente; il namespace predefinito è disponibile con il prefisso d.
Scrivere XPath per lo scraping o per XSLT è un continuo andare a tentativi se non hai una sandbox dal vivo. Questo tester riceve il tuo XML o HTML in un pannello e la tua espressione in un altro, valuta XPath 1.0 con il motore del tuo stesso browser ed elenca ogni nodo trovato con tipo, attributi, contenuto testuale e markup serializzato. Le espressioni scalari come count(//book) restituiscono direttamente il loro valore, e i prefissi dei namespace dichiarati nel documento vengono registrati per te. Tutto gira nel tuo browser: il documento non viene mai caricato su alcun server.
Come provare un'espressione XPath
-
1
Incolla XML o HTML
Il rilevamento automatico passa all'analisi HTML tollerante quando vede un doctype o una radice HTML; puoi anche forzare la modalità XML o HTML.
-
2
Inserisci il tuo XPath
Assoluta (`/library/book`) o relativa (`//div[@class='card']`), qualsiasi espressione XPath 1.0.
-
3
Valuta
Il motore XPath del tuo browser esegue la query in locale; nulla viene inviato a un server.
-
4
Ispeziona i risultati
Ogni corrispondenza mostra il tipo di nodo, gli attributi, il testo troncato e il markup serializzato; vengono elencate fino a 200 corrispondenze.
Le basi di XPath 1.0
| Espressione | Cosa seleziona |
|---|---|
/books/book |
I <book> figli della radice <books> |
//book |
Ogni <book> in qualsiasi punto del documento |
//book[@id='42'] |
I <book> con attributo id uguale a 42 |
//book[1] |
Il primo <book> di ogni genitore (non del doc.) |
(//book)[1] |
Il primo <book> dell’intero documento |
//book[title='1984'] |
I <book> il cui testo di <title> è “1984” |
//book/@id |
Gli attributi id di tutti gli elementi <book> |
//book[position() > 1] |
Tutti i <book> tranne il primo |
//book[last()] |
L’ultimo <book> di ogni genitore |
Funzionano anche le espressioni scalari: count(//book) restituisce un numero, string(//title) una stringa e boolean(//book[@id]) vero o falso. Il tester mostra quei valori direttamente invece di un elenco di nodi.
Gli assi più comuni oltre a child
ancestor::, tutti gli antenatifollowing-sibling::, i fratelli successivi al nodo correntepreceding-sibling::, i fratelli precedentidescendant::, tutti i discendentiattribute::(abbreviato@), gli attributi del nodo correnteparent::(abbreviato..), l’elemento genitore
Particolarità dell’HTML
L’HTML non è XML rigoroso, quindi il tester lo analizza in modo tollerante con il parser HTML del tuo browser invece di quello XML rigoroso. La modalità HTML viene rilevata automaticamente da <!DOCTYPE html> o da una radice <html>, e con il selettore della modalità documento puoi forzare l’una o l’altra. In modalità HTML i nomi di tag e attributi vengono convertiti in minuscolo, quindi scrivi il tuo XPath in minuscolo: //div[@class], non //DIV[@CLASS].
Namespace
L’XML con namespace richiede la registrazione dei prefissi:
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/">
<item>
<content:encoded>...</content:encoded>
</item>
</rss>
Il tester scorre il documento in cerca delle dichiarazioni xmlns e registra ogni prefisso automaticamente, quindi //content:encoded funziona senza altro. Un namespace predefinito (un semplice xmlns="...") non ha prefisso nel documento, perciò il tester lo associa al prefisso d: seleziona gli <item> di un feed con namespace predefinito con //d:item. I namespace registrati sono elencati accanto ai risultati.
Cosa questo tester non valuta
I browser valutano XPath 1.0, lo stesso dialetto usato dalla maggior parte degli stack di scraping. Le funzionalità di XPath 2.0 e successivi, come matches(string, regex), tokenize(string, delimiter), le espressioni for ... return e gli operatori di sequenza, non ne fanno parte; le troverai nelle toolchain XSLT 2.0/3.0. XPath 1.0 resta la scelta più portabile per il web scraping.
Consigli per i test
- Parti in largo e restringi. Prima
//div, poi//div[@class], infine il valore preciso della classe. - Controlla le dichiarazioni dei namespace. La maggior parte dei “perché il mio XPath non restituisce nulla?” dipende dai namespace; guarda l’elenco dei namespace registrati.
- Occhio alle maiuscole. XML distingue maiuscole e minuscole. La modalità HTML converte i nomi in minuscolo.
- Prova string() quando estrai testo.
//p/text()estring(//p)differiscono quando c’è markup annidato.
Domande frequenti
No, solo XPath. La maggior parte dei browser supporta entrambi tramite document.querySelectorAll (CSS) e document.evaluate (XPath). Usa quello più chiaro per il compito.
L’analisi dell’HTML converte in minuscolo i nomi di tag e attributi. Assicurati che il tuo XPath usi le minuscole: //div[@class], non //DIV[@CLASS]. Controlla anche la modalità: forzare XML su HTML poco rigoroso fallisce con un errore di analisi, mentre la modalità HTML lo analizza in modo tollerante.
I prefissi dichiarati nel documento vengono registrati automaticamente per la tua espressione. Un namespace predefinito viene associato al prefisso d, quindi //d:item seleziona gli elementi <item> di un documento con namespace predefinito. Le associazioni attive sono elencate con i risultati.
No. Il documento e l’espressione vengono valutati dal motore XPath del tuo stesso browser e non vengono inviati al nostro server, memorizzati né aggiunti all’indirizzo della pagina; restano solo nella sessione di questo browser perché la vista a più passaggi possa mostrarti i risultati.
Strumenti correlati
Riferimento Tabella ASCII
Tabella ASCII completa da 0 a 127 con decimale, esadecimale, ottale, binario e riferimento numerico HTML per ogni carattere, inclusi i codici di controllo come NUL, LF e DEL.
Generatore di lettere casuali
Genera lettere A-Z casuali. Scegli la quantità, usa maiuscole, minuscole o un mix, e applica il risultato a giochi, spunti o attività in classe.
Semplificatore di Algebra Booleana
Semplifica le espressioni booleane utilizzando le mappe di Karnaugh e l'algoritmo di Quine-McCluskey. Mostra ogni passo di minimizzazione e una forma finale SOP/POS.
Generatore di Palette di Colori
Genera palette monocromatiche, analoghe, complementari, triadiche o tetradiche da un colore base HEX ed esporta variabili CSS pronte da copiare.
Generatore di palette colori casuali
Genera palette casuali da 2 a 15 campioni, scegli uno stile vivace, pastello, tenue o scuro e copia codici HEX o variabili CSS.
Trova nome colore
Trova il colore CSS standard con nome più vicino a un valore HEX, RGB o HSL usando la differenza CIEDE2000.