Testador de XPath
Documento XML ou HTML
Cole XML ou HTML com até 1.000.000 de caracteres. A avaliação acontece neste navegador com XPath 1.0.
XPath 1.0 absoluto ou relativo. Os prefixos declarados no documento são registrados automaticamente; o namespace padrão fica disponível com o prefixo d.
Escrever XPath para scraping ou XSLT vira tentativa e erro se você não tem um ambiente de teste ao vivo. Este testador recebe seu XML ou HTML em um painel e sua expressão em outro, avalia XPath 1.0 com o motor do seu próprio navegador e lista cada nó encontrado com tipo, atributos, conteúdo de texto e marcação serializada. Expressões escalares como count(//book) retornam o valor diretamente, e os prefixos de namespace declarados no documento são registrados para você. Tudo roda no seu navegador: o documento nunca é enviado para servidor nenhum.
Como testar uma expressão XPath
-
1
Cole XML ou HTML
A detecção automática muda para a análise HTML tolerante ao ver um doctype ou uma raiz HTML; você também pode forçar o modo XML ou HTML.
-
2
Digite seu XPath
Absoluta (`/library/book`) ou relativa (`//div[@class='card']`), qualquer expressão XPath 1.0.
-
3
Avalie
O motor XPath do seu navegador executa a consulta localmente; nada é enviado a servidor algum.
-
4
Inspecione os resultados
Cada correspondência mostra o tipo de nó, os atributos, o texto aparado e a marcação serializada; até 200 correspondências são listadas.
O essencial do XPath 1.0
| Expressão | O que seleciona |
|---|---|
/books/book |
Os <book> filhos da raiz <books> |
//book |
Todo <book> em qualquer lugar do documento |
//book[@id='42'] |
Os <book> com atributo id igual a 42 |
//book[1] |
O primeiro <book> de cada pai (não do documento) |
(//book)[1] |
O primeiro <book> do documento inteiro |
//book[title='1984'] |
Os <book> cujo texto de <title> é “1984” |
//book/@id |
Os atributos id de todos os elementos <book> |
//book[position() > 1] |
Todos os <book> menos o primeiro |
//book[last()] |
O último <book> de cada pai |
Expressões escalares também funcionam: count(//book) retorna um número, string(//title) uma string e boolean(//book[@id]) verdadeiro ou falso. O testador mostra esses valores diretamente em vez de uma lista de nós.
Eixos comuns além de child
ancestor::, todos os ancestraisfollowing-sibling::, os irmãos depois do nó atualpreceding-sibling::, os irmãos anterioresdescendant::, todos os descendentesattribute::(atalho@), os atributos do nó atualparent::(atalho..), o elemento pai
Peculiaridades do HTML
HTML não é XML estrito, então o testador o analisa com tolerância usando o parser HTML do seu navegador em vez do parser XML estrito. O modo HTML é detectado automaticamente a partir de <!DOCTYPE html> ou de uma raiz <html>, e você pode forçar qualquer um dos modos com o seletor de modo do documento. No modo HTML, os nomes de tags e atributos ficam em minúsculas, então escreva seu XPath em minúsculas: //div[@class], não //DIV[@CLASS].
Namespaces
XML com namespaces exige o registro dos prefixos:
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/">
<item>
<content:encoded>...</content:encoded>
</item>
</rss>
O testador varre o documento em busca de declarações xmlns e registra cada prefixo automaticamente, então //content:encoded simplesmente funciona. Um namespace padrão (um xmlns="..." sem prefixo) não tem prefixo no documento, então o testador o vincula ao prefixo d: selecione os <item> de um feed com namespace padrão usando //d:item. Os namespaces registrados são listados ao lado dos resultados.
O que este testador não avalia
Os navegadores avaliam XPath 1.0, o mesmo dialeto usado pela maioria das stacks de scraping. Recursos do XPath 2.0 em diante, como matches(string, regex), tokenize(string, delimiter), expressões for ... return e operadores de sequência, não fazem parte dele; você os encontra nas toolchains de XSLT 2.0/3.0. XPath 1.0 continua sendo a escolha mais portátil para web scraping.
Dicas de teste
- Comece amplo e vá afunilando. Primeiro
//div, depois//div[@class], depois o valor exato da classe. - Confira as declarações de namespace. A maioria dos “por que meu XPath não retorna nada?” é namespace; olhe a lista de namespaces registrados.
- Atenção às maiúsculas. XML diferencia maiúsculas de minúsculas. O modo HTML converte os nomes para minúsculas.
- Teste string() ao extrair texto.
//p/text()estring(//p)diferem quando há marcação aninhada.
Perguntas frequentes
Não, só XPath. A maioria dos navegadores aceita os dois via document.querySelectorAll (CSS) e document.evaluate (XPath). Use o que for mais claro para a tarefa.
A análise de HTML converte nomes de tags e atributos para minúsculas. Garanta que seu XPath use minúsculas: //div[@class], não //DIV[@CLASS]. Confira também o modo: forçar XML em um HTML malformado falha com erro de análise, enquanto o modo HTML o analisa com tolerância.
Os prefixos declarados no documento são registrados automaticamente para a sua expressão. Um namespace padrão é vinculado ao prefixo d, então //d:item seleciona os elementos <item> de um documento com namespace padrão. Os vínculos ativos são listados junto com os resultados.
Não. O documento e a expressão são avaliados pelo motor XPath do seu próprio navegador e não são enviados ao nosso servidor, armazenados nem adicionados ao endereço da página; eles só permanecem na sessão deste navegador para que a visualização em várias etapas possa mostrar seus resultados.
Ferramentas relacionadas
Referência da Tabela ASCII
Tabela ASCII completa de 0 a 127 com valores decimais, hexadecimais, octais e binários e notação de referência numérica HTML, incluindo NUL, LF e DEL.
Gerador de Paletas de Cores
Gere paletas monocromáticas, análogas, complementares, triádicas ou tetrádicas a partir de uma cor base HEX e exporte variáveis CSS prontas para copiar.
Conversor de Binário para ASCII
Cole binário (bytes separados por espaço ou um longo fluxo de bits) e obtenha o texto ASCII que ele representa. Lida com codificações de 7 bits e 8 bits.
Conversor de ASCII para Hex
Converta texto ASCII em valores de byte hexadecimal. A saída usa dois dígitos hexadecimais por caractere, prontos para dumps de memória, rastreamentos de pacotes ou tabelas de firmware.
Conversor de BBCode para HTML
Converta BBCode (marcação de fórum) para HTML limpo. Lida com tags de formatação, listas, citações, código, imagens e links.
Simplificador de Álgebra Booleana
Simplifique expressões booleanas usando mapas de Karnaugh e o algoritmo de Quine-McCluskey. Mostra cada passo de minimização e uma forma final SOP/POS.