Saltar al contenido

Probador de XPath

XPath Tester

Evalúa una expresión XPath o un selector CSS sobre XML o HTML y enumera todos los nodos que coinciden.

Ejecuta una expresión XPath 1.0 o un selector CSS contra un documento XML o HTML y muestra cada nodo que coincidió, con la ruta absoluta a cada uno. La evaluación es la del propio navegador, así que lo que ves aquí es lo que hará `document.evaluate` en tu código.

🔒 Se ejecuta por completo en tu navegadorxpathxmlselectortest

Expresión XPath 1.0

Lenguaje de consulta

Documento

Leer como

Suelta un archivo

Se lee solo en esta pestaña.

Resultados

Los resultados aparecen aquí mientras escribes.

Cómo se ejecuta

  • · La evaluación corre sobre document.evaluate (XPath 1.0) y querySelectorAll del propio navegador. El tipado del resultado — conjunto de nodos, número, cadena, booleano —, la ruta absoluta de cada nodo y el manejo de los prefijos de espacio de nombres son de esta herramienta.
  • · El modo XML lee de forma estricta y dice qué está mal; el modo HTML lee con manga ancha, como hace un navegador. HTML normaliza los nombres de etiqueta a minúsculas, así que //DIV no vale y //div sí.
  • · En un documento con un espacio de nombres por defecto (xmlns="…"), un nombre sin prefijo no coincide con nada: esa es la regla de XPath 1.0. Usa el prefijo _ como en //_:item.
  • · Las funciones de XPath 2.0 y 3.x (matches, ends-with, lower-case) no están en ningún navegador. contains·starts-with·translate·normalize-space son lo que te da la 1.0.
  • · El documento se lee solo en esta pestaña y no se sube a ninguna parte.

Para JSON, el probador de JSONPath o el playground de jq es la herramienta adecuada.

Cómo se usa

  1. Elige cómo se lee el documento

    El modo XML es estricto e informa de lo que está mal formado. El modo HTML es permisivo como lo es un navegador, y normaliza los nombres de etiqueta a minúsculas.

  2. Escribe la expresión

    XPath o un selector CSS: el interruptor cambia cuál. Los botones de ejemplo cubren atributos, predicados, espacios de nombres, nodos de comentario y las funciones que devuelven escalares.

  3. Lee primero el tipo de resultado

    XPath devuelve cuatro clases de cosa, y solo una de ellas es un conjunto de nodos. `count()`, `string()` y `boolean()` te dan un valor único, mostrado por sí solo en lugar de como una lista de coincidencias vacía.

Preguntas frecuentes

Mi expresión no coincide con nada y el documento parece correcto.

Casi con certeza un espacio de nombres por defecto. Si el documento tiene `xmlns="…"` en su raíz, XPath 1.0 dice que un nombre sin prefijo no coincide con nada en absoluto: tienes que vincular un prefijo. Aquí ese prefijo es `_`, así que `//item` se convierte en `//_:item`.

¿Por qué `matches()` no existe?

Porque los navegadores implementan solo XPath 1.0. `matches`, `ends-with`, `lower-case` y el resto llegaron en 2.0 y ningún navegador lo tiene. El kit de 1.0 es `contains`, `starts-with`, `translate` y `normalize-space`.

¿XPath o CSS? ¿Cuál debería usar?

CSS es más corto y suficiente para la mayoría del scraping. XPath puede subir (`..`, `ancestor::`), coincidir por contenido de texto y devolver números y cadenas, nada de lo cual puede hacer un selector. Esta página ejecuta ambos para que puedas compararlos sobre el mismo documento.

¿Descarga una página por mí?

No. Tú pegas o sueltas el documento y se lee en esta pestaña. Descargar necesitaría un proxy —el navegador no deja que una página lea otro origen— y ese proxy vería todo lo que probaras.

Puede recibir de

Después

Estas aceptan lo que produce esta herramienta, así que el resultado puede pasar directamente.