function

FILTROXML

Todo sobre la función FILTROXML en Excel

La función FILTROXML es una de las herramientas más potentes y versátiles de Excel para el análisis y extracción de datos. Permite analizar cadenas de texto en formato XML (Lenguaje de Marcado Extensible) y extraer información específica utilizando expresiones XPath (Lenguaje de Rutas XML).

Su uso principal es la extracción de datos desde documentos XML o, en combinación con la función SERVICIOWEB, para realizar «web scraping» y obtener datos directamente desde páginas web o APIs que devuelvan contenido en formato XML.

Sintaxis

=FILTROXML(xml, xpath)

La función FILTROXML tiene los siguientes argumentos:

  • xml: Una cadena de texto con formato XML válido, o una referencia a una celda que contenga dicho texto. Obligatorio.
  • xpath: Una cadena de texto que representa una consulta en lenguaje XPath. Esta consulta indica qué nodos o valores se deben extraer del argumento xml. Obligatorio.

Ejemplos

Ejemplo 1: Extraer un valor específico de un XML simple

Supongamos que la celda A1 contiene el siguiente texto XML. Queremos extraer el título del libro.

A
1 <catalogo><libro id=»bk101″><autor>Gambardella, Matthew</autor><titulo>XML Developer’s Guide</titulo><precio>44.95</precio></libro></catalogo>
=FILTROXML(A1, "/catalogo/libro/titulo")

Resultado: XML Developer's Guide

La expresión XPath /catalogo/libro/titulo navega por la estructura del XML hasta encontrar el nodo <titulo> y devuelve su contenido.

Ejemplo 2: Extraer un atributo de un nodo

Usando el mismo XML del ejemplo anterior, esta vez queremos obtener el valor del atributo «id» del nodo <libro>.

=FILTROXML(A1, "/catalogo/libro/@id")

Resultado: bk101

En XPath, el símbolo @ se utiliza para seleccionar atributos en lugar de nodos.

Ejemplo 3: Extraer múltiples elementos (Desbordamiento en matrices dinámicas)

Si el XPath coincide con varios nodos, y estás usando una versión de Excel con matrices dinámicas (Excel 365, 2021), el resultado se desbordará en las celdas adyacentes. La celda A1 contiene una lista de frutas en XML.

A
1 <frutas><fruta>Manzana</fruta><fruta>Pera</fruta><fruta>Naranja</fruta></frutas>
=FILTROXML(A1, "//fruta")

Resultado (en celdas separadas):

  • Manzana
  • Pera
  • Naranja

La expresión //fruta busca todos los nodos llamados <fruta> en cualquier parte del documento.

Ejemplo 4: Uso con SERVICIOWEB para extraer datos de un Feed RSS

Este es uno de los usos más potentes. Podemos extraer los titulares de un feed de noticias en formato RSS (que es un tipo de XML). Combinamos FILTROXML con SERVICIOWEB para obtener los datos de una URL.

=FILTROXML(SERVICIOWEB("https://www.xataka.com/index.xml"), "//item/title")

Resultado: Una lista con los últimos títulos de los artículos publicados en el feed de Xataka. La función devolverá un array dinámico con todos los títulos encontrados.

Observaciones

La función FILTROXML es una herramienta avanzada. Su dominio depende en gran medida del conocimiento del lenguaje de consultas XPath.

El argumento xml tiene una limitación de 32,767 caracteres. Si necesitas procesar archivos XML más grandes, deberás dividirlos o usar otras herramientas como Power Query.

Errores comunes

  • #¡VALOR!: Ocurre si el argumento xml no es una cadena XML válida o si el xpath contiene errores de sintaxis (por ejemplo, caracteres no permitidos).
  • #N/A: Se produce cuando la expresión xpath es sintácticamente correcta pero no encuentra ninguna coincidencia en el documento XML proporcionado.

Disponibilidad por versión de Excel

La función FILTROXML está disponible en las siguientes versiones:

  • Excel 2013 o posterior (Windows)
  • Excel 2016 o posterior (Mac)
  • Excel para la Web

El comportamiento de desbordamiento automático (matrices dinámicas) para resultados múltiples está disponible de forma nativa en Excel 365 y Excel 2021. En versiones anteriores (2013-2019), podría ser necesario seleccionar un rango de celdas y usar la fórmula como una fórmula de matriz (presionando Ctrl+Shift+Enter).

Compatibilidad

Software Compatibilidad Notas Alternativa
Microsoft Excel ✔️ Disponible desde Excel 2013 (Windows) y 2016 (Mac).
Google Sheets No existe la función FILTROXML como tal. IMPORTXML (función muy similar y potente).
LibreOffice Calc ✔️ La función existe y se llama FILTERXML.
OpenOffice Calc No disponible.
WPS Office Spreadsheets No disponible.
Apple Numbers No disponible.

Funciones Relacionadas

  • SERVICIOWEB: Obtiene datos de un servicio web en Internet. Es el complemento perfecto para FILTROXML, ya que proporciona el contenido XML que esta función puede analizar.

Ver también...