Vai al contenuto

Banco di prova per XPath

XPath Tester

Valuta un’espressione XPath o un selettore CSS su XML o HTML ed elenca ogni nodo corrispondente.

Esegue un’espressione XPath 1.0 o un selettore CSS su un documento XML o HTML e mostra ogni nodo trovato, con il percorso assoluto di ciascuno. La valutazione è quella del browser stesso, quindi quello che si vede qui è quello che farà `document.evaluate` nel proprio codice.

🔒 Funziona interamente nel tuo browserxpathxmlselectortest

Espressione XPath 1.0

Linguaggio di query

Documento

Leggi come

Lascia cadere un file

Letto solo in questa scheda.

Risultati

I risultati compaiono qui mentre scrivi.

Come gira

  • · La valutazione passa per document.evaluate (XPath 1.0) e querySelectorAll del browser stesso. La tipizzazione del risultato — insieme di nodi, numero, stringa, booleano —, il percorso assoluto di ogni nodo e la gestione dei prefissi di namespace sono di questo strumento.
  • · La modalità XML legge in modo rigoroso e dice che cosa non va; la modalità HTML legge con larghezza, come fa un browser. HTML normalizza i nomi dei tag in minuscolo, quindi //DIV non va e //div sì.
  • · In un documento con un namespace predefinito (xmlns="…"), un nome senza prefisso non corrisponde a niente: è la regola di XPath 1.0. Usa il prefisso _ come in //_:item.
  • · Le funzioni di XPath 2.0 e 3.x (matches, ends-with, lower-case) non ci sono in nessun browser. contains·starts-with·translate·normalize-space sono quello che dà la 1.0.
  • · Il documento viene letto solo in questa scheda e non viene caricato da nessuna parte.

Per il JSON, il tester JSONPath o il playground di jq è lo strumento giusto.

Come si usa

  1. Scegliere come leggere il documento

    La modalità XML è severa e segnala che cosa è malformato. La modalità HTML è tollerante come lo è un browser, e normalizza i nomi dei tag in minuscolo.

  2. Scrivere l’espressione

    XPath o un selettore CSS: l’interruttore sceglie quale. I pulsanti di esempio coprono gli attributi, i predicati, i namespace, i nodi di commento e le funzioni che restituiscono uno scalare.

  3. Leggere prima il tipo di risultato

    XPath restituisce quattro tipi di cose, e uno solo è un insieme di nodi. `count()`, `string()` e `boolean()` danno un valore singolo, mostrato per conto suo invece che come un elenco di corrispondenze vuoto.

Domande frequenti

La mia espressione non trova niente e il documento sembra a posto.

Quasi certamente un namespace predefinito. Se il documento ha `xmlns="…"` sulla radice, XPath 1.0 stabilisce che un nome senza prefisso non corrisponde a niente: bisogna legare un prefisso. Qui quel prefisso è `_`, quindi `//item` diventa `//_:item`.

Perché `matches()` non esiste?

Perché i browser implementano soltanto XPath 1.0. `matches`, `ends-with`, `lower-case` e gli altri sono arrivati con la 2.0, e nessun browser ce l’ha. Gli attrezzi della 1.0 sono `contains`, `starts-with`, `translate` e `normalize-space`.

XPath o CSS: quale conviene usare?

CSS è più corto e basta per la maggior parte dello scraping. XPath può risalire (`..`, `ancestor::`), agganciarsi al contenuto testuale e restituire numeri e stringhe, e un selettore non fa niente di tutto questo. Questa pagina esegue entrambi, così si possono confrontare sullo stesso documento.

Scarica una pagina al posto mio?

No. Il documento si incolla o si trascina, e viene letto in questa scheda. Scaricarlo richiederebbe un proxy — il browser non lascia che una pagina legga un’altra origine — e quel proxy vedrebbe tutto quello che si è provato.

Può ricevere da

Dopo

Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.