Comando readXML

El comando ReadXML permite la lectura de datos desde un archivo XML. Al especificar la ruta hacia un elemento del archivo XML, es posible obtener su valor, el cual STELA guarda en una variable para luego poder ser usada como una parte de la automatización.

XML (Extensible Markup Language) es un lenguaje diseñado para almacenar y transportar datos de manera estructurada. Fue creado para ser legible tanto para humanos como para máquinas, lo que lo hace ideal para el intercambio de información entre diferentes sistemas informáticos.

Las características principales de XML incluyen: #
  1. Los datos se organizan en una estructura jerárquica utilizando etiquetas que describen el significado de cada elemento.
  2. XML permite definir etiquetas personalizadas y estructuras de datos específicas para adaptarse a las necesidades de una aplicación particular.
  3. XML es independiente de la plataforma y del lenguaje de programación, lo que significa que puede ser utilizado en una amplia variedad de sistemas y aplicaciones.
  4. Aunque XML está diseñado para ser procesado por máquinas, también es legible para los humanos, lo que facilita la depuración y el mantenimiento de los datos.
  5. También es compatible con una amplia gama de tecnologías y estándares, lo que lo hace interoperable con diferentes sistemas y aplicaciones.
Este comando presenta 3 parámetros: #
  • Archivo: Se debe ingresar la ruta del archivo XML del que se va a leer la información, permite ingresar también un file de STELA. Este parámetro aceptará entradas de tipo String, File, Variable, Constant y Extended.
  • Campo: Permite indicar el campo del que se desea leer el dato. Representa el Path completo al campo seleccionado (por ejemplo, en HTML, usando XPATH, /html/body/div[2]/button)
  • Variable: Variable donde se va a almacenar el valor leído del Campo indicado en el archivo XML seleccionado. En caso de que el valor obtenido sea una estructura con varios valores y no un valor único se van a guardar todos los resultados bajo la categoría de la variable indicada, pero usando el identificador de cada valor como nombre de variable. Este parámetro aceptará entradas únicamente de tipo Variable.

Al obtener el valor del campo pueden ocurrir dos casos:

  • Que sea un valor único (un String, Numero, Booleano, etc.). En esos casos se obtiene ese valor y se guarda en la variable resultado indicada
  • Que no sea un valor único, sino que dentro de ese campo haya aún una estructura XML con varios campos. En esos casos se deberá generar una nueva variable por cada hoja con datos dentro de la estructura y guardar ese valor bajo la categoría indicada en la variable resultado.
Por ejemplo, sea 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)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *