Prefiero usar datos JSON en un flujo porque es fácil trabajar con ellos.
Pero no siempre puede elegir sus datos de origen y esta vez tenía una API Rest que devolvía datos XML en lugar de JSON.
Si está trabajando con JSON, simplemente puede usar una acción Parse JSON para extraer los datos, con XML necesitaremos realizar un par de pasos adicionales y usar XPath para extraerlos.
Primero le mostraré cómo funcionan los conceptos básicos de las expresiones XPath y luego cómo usarlas en combinación con una API.
Analizando XML con XPath
Por lo tanto, XPath es un lenguaje de consulta generalmente utilizado para extraer datos (nodos) de un documento XML.
En Power Automate podemos usar la función XPath dentro de un Componer acción.
Para este ejemplo, usaré una parte del ejemplo de archivo XML de Microsoft.
<catalog> <book id="bk101"> <author>Gambardella, Matthew</author> <title>XML Developer's Guide</title> <genre>Computer</genre> <price>44.95</price> <publish_date>2000-10-01</publish_date> <description>An in-depth look at creating applications with XML.</description> </book> <book id="bk102"> <author>Ralls, Kim</author> <title>Midnight Rain</title> <genre>Fantasy</genre> <price>5.95</price> <publish_date>2000-12-16</publish_date> <description>A former architect battles corporate zombies, an evil sorceress, and her own childhood to become queen of the world.</description> </book> </catalog>
Para fines de prueba, estoy usando un flujo con un disparador manual.
Primero, creamos un Componer acción y agregue una parte del XML de Libros en las entradas.
Intente siempre cambiar el nombre de sus acciones a algo que signifique completo, en este caso, datos XML, por ejemplo.

Ahora XPath es realmente poderoso. Por ejemplo, podemos obtener todos los libros y procesar cada libro más adelante en el flujo.
Pero también podemos obtener con una función todas las fechas de publicación.
Selección de nodos con XPath
Entonces, antes de continuar con el Flujo en Power Automate, primero echemos un vistazo de cerca a la sintaxis de XPath.
En la siguiente tabla, he enumerado un par de las expresiones más utilizadas y cuál sería el resultado basado en el XML de ejemplo.
Expresión | Resultado |
---|---|
/catálogo/libro | Seleccione todos los nodos con el libro de nombres del catálogo de elementos raíz. Si comienza la ruta con / entonces siempre es la ruta absoluta |
catálogo/libro | El mismo resultado es el anterior, pero el catálogo ahora también puede ser un elemento secundario de otro elemento. |
//autor | Seleccionar todos los elementos de autor independientemente de su ubicación |
libro//autor | Seleccione todos los elementos de autor que sean secundarios del elemento de libro, sin importar dónde se encuentren. |
//@identificación | Devuelve todos los atributos de identificación (en este caso, la identificación del elemento del libro) |
//libro[1] | Seleccione el primer libro. Usar [last()] para seleccionar el último elemento. |
//libro[price>20.00] | Seleccione todos los elementos del libro con un elemento de precio superior a 20,00 |
Uso de XPath en Power Automate
Para usar XPath en un flujo, creamos una nueva acción Componer. Haga clic en el campo de entrada y seleccione la expresión.
La estructura de la función es la siguiente:
xpath(<XML data>, <xpath expression>)
Entonces, para seleccionar todos los elementos del libro del XML, podemos usar la siguiente expresión:
xpath( xml( outputs('XML_Data') ), '//book' )
- Así que tenemos que convertir el XML datos a un formulario XML válido. Por eso usamos
xml()
. - Entonces obtenemos las salidas del Acción de redacción XML_Data.
- Y en la última parte, tenemos nuestra Expresión XPath
//book

Consejo
Si se pregunta por qué mi editor de expresiones se ve diferente al suyo, consulte este artículo sobre cómo habilitar el nuevo Editor de expresiones en Power Automate.
El resultado de la expresión anterior son todos los elementos del libro como este:
<book id="bk101"> <author>Gambardella, Matthew</author> <title>XML Developer's Guide</title> <genre>Computer</genre> <price>44.95</price> <publish_date>2000-10-01</publish_date> <description>An in-depth look at creating applications with XML.</description> </book>
Si desea ver el resultado de su expresión, simplemente puede agregar una acción de redacción y usar la expresión XML(item())
en eso.
Iterando sobre los resultados
los Obtener todos los libros Las acciones que creamos devolverán una matriz con los resultados. Para procesar los libros, podemos usar un Aplicar a cada acción.
Dentro de for each, agregamos otra acción Redactar para obtener el autor, por ejemplo. En este caso, no quiero crear el elemento, pero el valor actual. usamos el string
función para obtener el valor real del nodo:
xpath( item(), 'string(//author)' )
Aquí usamos //, pero también puede usar /book/author
o book/author
. En este caso, todo devolvería los mismos resultados.

Uso de una API XML en Power Automate
Con Flow, puede obtener fácilmente datos de una API con la acción HTTP (que requiere Flow Premium). La acción HTTP devolverá los resultados de la llamada a la API en su salida del cuerpo.
Entonces, para usar estos datos XML, podemos usar la siguiente expresión XPath:
xpath( xml( body('HTTP') ), '/catalog/books' )
Convertimos la salida de la API a XML válido y podemos usar nuestra expresión XPath para obtener los elementos correctos que necesitamos.
Contar filas XML en Power Automate
Hay dos opciones para contar filas XML en Power Automate. Podemos usar XPath o contar la longitud de un resultado XPath.
Cuando usamos XPath, básicamente usamos los mismos métodos de selección que antes, pero lo envolvemos en una función de conteo:
xpath( xml( outputs('XML_Data') ), 'count(//author)' )
La longitud es una función estándar que se puede usar para medir la longitud de cualquier resultado en Power Automate.
En este caso, medimos la longitud de una expresión XPath utilizada anteriormente.
length(outputs('Get_all_books'))
Problema común con XPath en Flow
Entonces, cuando comencé a usar la expresión XPath, me encontré con un par de problemas bastante comunes que pueden ser realmente frustrantes si no los conoce.
Haga clic para descargar
Si se equivocó en la expresión, no verá ningún error. por ejemplo, el las expresiones distinguen entre mayúsculas y minúsculas. Asi que //Books
no devolverá ningún dato.
Cuando pruebe su flujo, verá en la entrada y salida de la expresión XPath Haga clic para descargar.

Si descarga o abre el archivo, todo lo que ve son corchetes vacíos []. Básicamente, esto significa que su expresión no funciona como esperaba, no encontró ningún resultado.
Si la expresión funciona, entonces en los campos de salida verás algo como esto:
[ { "$content-type": "application/xml;charset=utf-8", "$content": "PGJvb2sgaWQ9ImJrMTAxIj4NCiAgPGF1dGhvcj5HYW1iYXJkZWxsYSwgTWF0dGhldzwvYXV0aG9yPg0KICA8dGl0bGU+WE1MIERldmVsb3BlcidzIEd1aWRlPC90aXRsZT4NCiAgPGdlbnJlPkNvbXB1dGVyPC9nZW5yZT4NCiAgPHByaWNlPjQ0Ljk1PC9wcmljZT4NCiAgPHB1Ymxpc2hfZGF0ZT4yMDAwLTEwLTAxPC9wdWJsaXNoX2RhdGU+DQogIDxkZXNjcmlwdGlvbj5BbiBpbi1kZXB0aCBsb29rIGF0IGNyZWF0aW5nIGFwcGxpY2F0aW9ucyANCiAgICAgIHdpdGggWE1MLjwvZGVzY3JpcHRpb24+DQo8L2Jvb2s+" }, { "$content-type": "application/xml;charset=utf-8", "$content": "PGJvb2sgaWQ9ImJrMTAyIj4NCiAgPGF1dGhvcj5SYWxscywgS2ltPC9hdXRob3I+DQogIDx0aXRsZT5NaWRuaWdodCBSYWluPC90aXRsZT4NCiAgPGdlbnJlPkZhbnRhc3k8L2dlbnJlPg0KICA8cHJpY2U+NS45NTwvcHJpY2U+DQogIDxwdWJsaXNoX2RhdGU+MjAwMC0xMi0xNjwvcHVibGlzaF9kYXRlPg0KICA8ZGVzY3JpcHRpb24+QSBmb3JtZXIgYXJjaGl0ZWN0IGJhdHRsZXMgY29ycG9yYXRlIHpvbWJpZXMsIA0KICAgICAgYW4gZXZpbCBzb3JjZXJlc3MsIGFuZCBoZXIgb3duIGNoaWxkaG9vZCB0byBiZWNvbWUgcXVlZW4gDQogICAgICBvZiB0aGUgd29ybGQuPC9kZXNjcmlwdGlvbj4NCjwvYm9vaz4=" }, ]
Esto es básicamente dos documentos XML en una matriz. Para ver el contenido puedes usar una acción de redacción y la expresión XML(item())
.
Terminando
Espero que este artículo lo haya ayudado a comenzar a usar XPath en Power Automate.
Tenga en cuenta que las expresiones distinguen entre mayúsculas y minúsculas y, si no funciona, vuelva a verificar sus rutas.
También te pueden interesar los siguientes artículos
Otros artículos relacionados

Cómo configurar la autenticación multifactor en Office 365
Leer Más

Office 365 E3 frente a E5
Leer Más

Estructura tus reuniones de Microsoft Teams con Decisiones
Leer Más

Migración de inquilino a inquilino de Microsoft 365
Leer Más

Más de 100 fondos de equipos divertidos – Microsoft Teams
Leer Más

OneDrive vs Google Drive: lo que necesita saber
Leer Más