#
¿Cómo funciona? #
El comando ReadXML permite extraer información específica de un archivo XML y almacenarla en variables para su posterior uso en automatizaciones. Funciona analizando el archivo XML proporcionado y buscando el elemento indicado, para luego asignar el valor encontrado a la variable designada.
¿Qué tipo de información puedo obtener? #
Puedes obtener cualquier tipo de dato que se encuentre dentro del archivo XML, ya sea un texto, un número, una fecha o incluso estructuras XML anidadas.
¿Dónde se almacenan los resultados? #
Los resultados obtenidos al ejecutar el comando ReadXML se almacenan en la variable que se especificó en el parámetro «Variable». El valor obtenido se asigna directamente a esta variable, pudiendo ser utilizado en cualquier parte de tu automatización.
Ventajas de uso #
- Flexibilidad: Permite extraer cualquier tipo de información de un archivo XML, adaptándose a diferentes estructuras y niveles de anidamiento.
- Reutilización: Los datos extraídos se almacenan en variables, lo que facilita su reutilización en distintas partes de la automatización.
- Integración: Facilita la integración de datos externos en tus procesos automatizados, permitiendo trabajar con una amplia variedad de formatos de datos.
Casos de uso #
- Extraer datos de configuración: Obtener valores de configuración almacenados en un archivo XML para personalizar el comportamiento de una automatización.
- Procesar respuestas de servicios web: Extraer datos de las respuestas XML de servicios web y utilizarlos para tomar decisiones o generar reportes.
- Leer datos de archivos: Obtener información de archivos XML generados por otros sistemas o aplicaciones.
Proceso detallado #
- Seleccionar el archivo XML: Indica la ruta completa del archivo XML que deseas analizar.
- Especificar el elemento: Define la ruta completa del elemento dentro del XML del cual quieres obtener el valor. Se utiliza una sintaxis similar a XPath para navegar por la estructura del documento.
- Asignar a una variable: Indica el nombre de la variable donde se almacenará el valor extraído.
- Ejecutar el comando: Al ejecutar el comando, el sistema buscará el elemento especificado en el archivo XML y asignará el valor encontrado a la variable indicada.
Proceso detallado #
Damos como ejemplo el siguiente archivo XML:
Si deseamos obtener el dato en «Items», podemos utilizar el comando ReadXML y especificar que nos traiga el dato que se encuentra en /Document/Data/Items (ruta al valor a leer).
También podemos solicitar toda la información contenida dentro de «Verification». Al formar una ruta similar a la anterior, le pedimos que nos traiga la información en /Document/Data/Verification, lo que nos permitirá guardar los datos de ID, Code, Date y Time que se encuentran dentro del nodo «Verification».
Ahora, todos estos son datos cuyos valores son texto (o nodos que contienen valores que son texto). Sin embargo, los archivos XML también permiten poner como valor de un nodo un XML embebido, como se muestra en el siguiente ejemplo:
En este caso, ahora existe un campo Description en /Document/Data/Description cuyo valor no es un texto, sino otro XML embebido. Afortunadamente, para facilitar la explicación, Notepad++ resalta este tipo de datos en naranja.
El problema surge al intentar obtener un valor del XML embebido, como por ejemplo, el dato de Prefix. No podemos utilizar la ruta /Document/Data/Description/Info/Data/Control/OtherInfo/Prefix, donde la primera parte en celeste sería la ruta para acceder al XML embebido, y luego la ruta en naranja sería la ruta dentro del XML embebido.
Solución: Dado que no podemos acceder directamente al dato que queremos, necesitamos realizar el proceso en dos pasos. Primero, vamos a obtener toda la información del XML embebido completo utilizando el comando ReadXML. Luego, usaremos ese dato como si fuera un XML independiente y aplicaremos el procedimiento normal para buscar el dato en Prefix que deseamos.
Ejemplos: #
Primero, repasemos cómo es el caso normal del comando ReadXML en STELA, leyendo el campo Items del archivo anterior.
Al indicar la ruta al archivo, STELA va a leer ese archivo XML y buscar el dato en el nodo /Document/Data/Items, para luego guardarlo en la variable @DatoXML.
Otro ejemplo:
En este caso, queremos obtener todo el XML embebido en lugar de un valor específico. El proceso sigue siendo el mismo: solicitaremos el valor del nodo Description de la misma manera que lo haríamos para cualquier otro dato.
Ahora nos va a guardar en la variable @DatoXML_2 el XML embebido que se encuentra en Description.
Ahora, teniendo el XML embebido almacenado dentro de una variable, lo que debemos hacer para completar el proceso es tomar ese XML y solicitar el dato de Prefix que queríamos.
La diferencia con los ejemplos anteriores es que ahora no utilizamos el archivo original como XML de entrada. En cambio, pasaremos como entrada el XML que tenemos almacenado en la variable @DatoXML_2, que obtuvimos en el paso anterior y sabemos que contiene el XML embebido.
Con eso, al indicar la ruta al nodo Prefix, que ahora es un nodo normal de texto, obtendremos su valor.
Evidencia: #
Al ejecutar el proceso, se puede observar cómo STELA lee los archivos y almacena la información deseada en las variables correspondientes para cada uno de los pasos.
(Valores de las 3 variables usadas en el _wrk_datos.TMP)