Inicio › Herramientas para desarrolladores › Probador de XPath

Probador de XPath

Pega un documento XML o HTML, escribe una expresión XPath y ve al instante qué nodos coinciden, resaltados en el documento y listados con sus rutas completas y valores. También se muestran los números, cadenas y booleanos de funciones como count(). Todo se ejecuta localmente con el motor XPath de tu navegador.

Última actualización:

Coincidencias resaltadas

Resultados

    Usa el motor XPath 1.0 integrado del navegador en tu propio dispositivo; no se sube nada. Consejo: haz clic en un resultado para ir a él en el documento.

    Publicidad
    Publicidad

    Cómo usar Probador de XPath

    1. Pega tu documento en el cuadro Documento o abre un archivo, y elige Analizar como XML o Analizar como HTML. Para empezar se carga un ejemplo.
    2. Escribe una expresión XPath en el cuadro de arriba o haz clic en un ejemplo para probarlo.
    3. Lee el resumen: cuántos nodos coincidieron, o el resultado numérico, de cadena o booleano de una función.
    4. Revisa los resaltados en el documento formateado de la derecha y en la lista de resultados de abajo; haz clic en un resultado para ir a él.
    5. Copia los valores, el marcado o las rutas XPath de todas las coincidencias para usarlos en tu código o scraper.

    Chuleta de XPath

    ExpresiónSelecciona
    /library/booklos hijos book del elemento raíz library
    //booktodos los elementos book de cualquier parte del documento
    //book/@idel atributo id de cada book
    //book[1]cada book que es el primer hijo book de su padre
    (//book)[1]el primer book de todo el documento
    //book[last()]el último book de cada padre
    //book[@lang='fr']los book cuyo atributo lang es igual a fr
    //book[price > 30]los book con un hijo price mayor que 30
    //book[not(@available)]los book sin atributo available
    //title/text()los nodos de texto dentro de los elementos title
    //*[not(*)]elementos hoja (sin elementos hijos)
    //book | //magazineunión de ambos conjuntos de nodos

    Ejes

    EjeForma abreviadaSignificado
    child::titlehijos directos (el eje predeterminado)
    descendant-or-self::node()///el nodo y todo lo que hay debajo
    attribute::@atributos
    parent::node()..el padre
    self::node().el nodo actual
    ancestor::-padre, abuelo y así hasta la raíz
    following-sibling:: / preceding-sibling::-hermanos después / antes del nodo
    following:: / preceding::-todos los nodos después / antes de él en el orden del documento

    Funciones de XPath 1.0

    GrupoFunciones
    Conjuntos de nodoslast(), position(), count(), name(), local-name(), namespace-uri(), id()
    Cadenasstring(), concat(), contains(), starts-with(), substring(), substring-before(), substring-after(), string-length(), normalize-space(), translate()
    Númerosnumber(), sum(), floor(), ceiling(), round()
    Booleanosboolean(), not(), true(), false(), lang()

    Coincidencia sin distinguir mayúsculas en XPath 1.0: //title[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'xpath')]. Coincidir con una clase CSS entre varias: //li[contains(concat(' ', normalize-space(@class), ' '), ' sale ')].

    Preguntas frecuentes

    ¿Qué es XPath?

    XPath (XML Path Language) es un lenguaje de consulta del W3C para seleccionar partes de un documento XML o HTML. Una expresión como //book[price > 30]/title recorre el árbol del documento y devuelve los nodos coincidentes, o calcula un valor con funciones como count() y sum(). Se usa en XSLT, en localizadores de Selenium y Playwright, en scrapers web y en bibliotecas XML de casi todos los lenguajes de programación.

    ¿Qué versión de XPath usa este probador?

    Usa el motor XPath 1.0 integrado en tu navegador (document.evaluate), la misma versión que admiten los navegadores, Selenium, lxml, libxml2, el subconjunto de ElementTree de Python y el javax.xml.xpath predeterminado de Java. Las funciones de XPath 2.0 y 3.1 como lower-case(), ends-with(), matches() o max() no están disponibles; usa translate(), contains(), starts-with() y substring() en su lugar.

    ¿Por qué mi XPath no devuelve nada en un XML con xmlns?

    Cuando el elemento raíz declara un espacio de nombres predeterminado (xmlns="…"), todos los elementos sin prefijo pertenecen a ese espacio de nombres y un simple //item no coincide con ellos en XPath 1.0. Esta herramienta ignora por defecto el espacio de nombres predeterminado para que funcionen los nombres simples. Desmarca esa opción para usar el prefijo d:, por ejemplo //d:item. Los prefijos declarados en el documento, como atom: o soap:, se resuelven automáticamente.

    ¿Qué diferencia hay entre / y // en XPath?

    Una barra simple selecciona los hijos directos: /library/book devuelve los elementos book que son hijos del elemento raíz library. Una barra doble selecciona descendientes a cualquier profundidad: //book devuelve todos los elementos book de cualquier parte del documento, y //book//title todos los title dentro de un book, por muy anidados que estén.

    ¿Cómo selecciono un elemento por atributo o por texto?

    Usa un predicado entre corchetes. //book[@id='b2'] selecciona por valor de atributo, //book[title='Mastering XPath'] por el texto de un hijo, //a[contains(@href, 'example')] por parte de un atributo y //p[contains(., 'Contact')] por texto en cualquier parte del elemento. Usa normalize-space() para ignorar los espacios sobrantes.

    ¿Se trata el HTML de forma distinta al XML?

    Sí. En el modo HTML la página se analiza como lo haría un navegador, así que las etiquetas sin cerrar se corrigen y los elementos html, head, body y tbody que faltan se añaden automáticamente. Ten en cuenta el tbody añadido al copiar un XPath de una tabla: //table//tr es más seguro que //table/tr. Los nombres de etiqueta se comparan en minúsculas.

    ¿Se sube mi documento?

    No. El análisis y la evaluación XPath se hacen con JavaScript dentro de esta página, así que tu XML o HTML nunca sale de tu dispositivo.

    ¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?

    Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.

    Herramientas relacionadas

    Ver todas las de Entornos de prueba de código →