Para saber más sobre los filtros en general, consulte el tema Comprender los filtros.
Utilice este filtro siempre que un desencadenador reciba los datos en código XML. El filtro le permite extraer campos individuales, campos en las subáreas reiterativas, e incluso pares nombre-valor
. La estructura XML define elemento y subelementos, atributos y sus valores, y valores de texto (valores de elementos).
A pesar de que se puede definir la estructura del archivo XML, NiceLabel recomienda importar la estructura del archivo XML de muestra existente. Haga clic en el botón Importar estructura de datos en la banda de opciones. Después de importar la estructura XML, la sección Vista previa de datos muestra el contenido XML. También resalta los elementos y atributos que usted define como campos de salida.
Para ejemplos de datos XML, consulte la sección Datos XML.
Definir estructuras
Para usar los elementos XML, debe configurar su uso como:
-
Valor de variable: Especifique que quiere usar el elemento seleccionado como campo y que asignará su valor a las variables respectivas en la acción Usar filtro de datos. Para obtener más información, consulte el tema Definir campos XML.
-
Elemento opcional: Especifique que este elemento no es obligatorio. Esto se corresponde con el atributo del esquema XML (archivo XSD)
minOccurs=0
. La variable asignada a dicho campo tendrá un valor vacío, cuando el elemento no aparezca en XML.
-
-
Bloque de datos: Especifica que el elemento seleccionado se produce múltiples veces y proporciona datos para una única etiqueta. El bloque de datos se puede definir como área reiterativa, como área de asignación, o ambas.
-
Área reiterativa: Especifique que quiere extraer valores de todos los bloques de datos reiterativos, no solo el primero. Puede definir campos dentro de cada bloque de datos. Debe asignar los campos definidos a las variables respectivas en la acción Usar filtro de datos. Para obtener más información, consulte el tema Definir elementos reiterativos.
-
Área de asignación: Especifique que el bloque de datos tiene pares
nombre-valor
. Los nombres de los campos y sus valores se leen simultáneamente. La asignación de variables se realiza automáticamente. Use esta función para ajustar el filtro a los datos de entrada cambiantes, lo que elimina el tiempo de mantenimiento. Para obtener más información, consulte el tema Definir área de asignación XML.
-
La sección Vista previa de los datos simplifica la configuración. El resultado de una regla de filtro definida se resaltará en el área de vista previa.
Para cambiar los datos XML en vista previa, haga clic en Abrir y busque un nuevo archivo XML de muestra.
Cuando define campos XML, hace que los valores de los elementos seleccionados estén disponibles automáticamente. La definición de filtros hace que dichos filtros estén disponibles para asignación a variables en acciones. Esto le permite extraer valores de elementos o atributos.
Para definir el valor de elemento, realice lo siguiente:
-
Seleccione el elemento o el atributo en la lista de estructuras.
-
Para Uso seleccione Valor de variable.
-
El elemento se muestra en la lista de estructuras con letras en negrita, indicando que está en uso.
-
El elemento o nombre del atributo se utilizará como el nombre de campo de salida.
-
En la sección Vista previa de los datos se resaltará el valor del elemento seleccionado.
![]() |
Opciones de formato
Esta sección define las funciones de manipulación de cadenas que se aplicarán a las variables o campos seleccionados. Puede seleccionar una o varias funciones. Las funciones se aplican en el mismo orden seleccionado en la interfaz del usuario: de arriba a abajo.
-
Borrar espacios en el comienzo: borra todos los caracteres de espacio (código 32 ASCII decimal) en el comienzo de la cadena.
-
Borrar espacios en el final: borra todos los caracteres de espacio (valor 32 ASCII decimal) en el final de una cadena.
-
Borrar el carácter de apertura y cierre: borra los caracteres de apertura y cierre seleccionados que aparecen por primera vez en la cadena.
Ejemplo 10. Ejemplo
Si utiliza "{" para el carácter de apertura y "}" para el carácter de cierre, la cadena de entrada
{{selección}}
se convertirá en{selección}
.
-
Buscar y reemplazar: ejecuta la función estándar de buscar y reemplazar a partir de los valores provistos para buscar qué y reemplazar con. También puede usar expresiones comunes.
Nota
Existen varias implementaciones de expresiones comunes en uso. utiliza la sintaxis de .NET Framework para las expresiones comunes. Para obtener más información, consulte Artículo de base de conocimiento.
-
Reemplazar caracteres que no se pueden imprimir con espacios: reemplaza todos los caracteres de control en la cadena con espacios (código 32 ASCII decimal). Los caracteres que no se pueden imprimir son caracteres con valores ASCII decimales entre 0 y 31, y 127 y 159.
-
Borrar caracteres que no se pueden imprimir: borra todos los caracteres de control de la cadena. Los caracteres que no se pueden imprimir son caracteres con valores ASCII decimales entre 0 y 31, y 127 y 159.
-
Descodificar caracteres especiales: descodifica los caracteres (o códigos de control) que no están disponibles en el teclado, como Retorno de carro y Avance de línea. utiliza una notación para codificar dichos caracteres en lenguaje natural, como <CR> para Retorno de carro y <LF> para Avance de línea. Para obtener más información, consulte el tema Introducción de caracteres especiales (Códigos de control).
Esta opción convierte caracteres especiales de la sintaxis en caracteres binarios reales.
Ejemplo 11. Ejemplo
Cuando reciba los datos "<CR><LF>", los usa como una cadena simple de 8 caracteres. Deberá habilitar esta opción para interpretar y usar los datos recibidos como dos caracteres binarios
CR
(Retorno de carro – ASCII código 13) yLF
(Avance de línea – ASCII código 10).
-
Buscar y eliminar todo antes de: Busca la cadena provista y borra todos los caracteres desde el comienzo de los datos hasta la cadena. La cadena buscada también se puede borrar.
-
Buscar y eliminar todo después de: Busca la cadena provista y borra todos los caracteres desde la cadena hasta el fin de los datos. La cadena buscada también se puede borrar.
-
Cambiar grafía: Cambia todos los caracteres de las cadenas a mayúsculas o minúsculas.
Vista previa de los datos
Esta sección proporciona la vista previa de la definición del campo. Cuando se selecciona el elemento definido, se resalta su posición en los datos en vista previa.
-
Vista previa del nombre del archivo: especifica el archivo que contiene los datos de muestra que se analizarán a través del filtro. Se copia el archivo en vista previa de la definición del filtro. Si cambia el nombre del archivo en vista previa, se guarda el nuevo nombre.
-
Abrir: selecciona otro archivo sobre el cual ejecutar las reglas de filtro.
-
Actualizar: vuelve a ejecutar las reglas de filtro sobre el contenido del nombre del archivo en vista previa. Automation actualiza la sección Vista previa con el resultado.
Si un elemento XML aparece en datos XML múltiples veces, es un elemento reiterativo. Generalmente, el elemento reiterativo tiene datos para una sola etiqueta. Para indicar que quiere utilizar datos de todos los elementos reiterativos, no solo del primero, tiene que definir el elemento como Bloque de datos y activar la opción Elemento reiterativo. Cuando el filtro contiene la definición de elementos definidos como bloque de datos / elemento reiterativo, la acción Usar filtro de datos mostrará elementos reiterativos con marcadores de posición anidados. Toda acción anidada debajo de dicho marcador de posición se ejecutará únicamente para los bloques de datos en este nivel.
Ejemplo
El elemento <item>
está definido como Bloque de datos y Elemento reiterativo. Esto indica al filtro que extraiga el elemento <item>
todas las veces que aparezca, no solo la primera. En este caso, el elemento <item> se definirá como el subnivel en la acción Usar filtro de datos. Debe anidar las acciones Abrir etiqueta e Imprimir etiqueta debajo del marcador de posición de este subnivel, de modo que esté en bucle todas las veces que aparezca el elemento <item>
. Como se muestra en el siguiente ejemplo, en tres oportunidades.
<?xml ver sion="1.0" encoding="utf-8"?> <asx:abap xmlns:asx="http://www.sap.com/abapxml" ver sion="1.0"> <asx:values> <NICELABEL_JOB> <T IMEST AMP>20130221100527.788134</T IMEST AMP> <USER>PGRI</USER> <IT _LABEL_DAT A> <item> <LBL_NAME>goods_r eceipt.nlbl</LBL_NAME> <LBL_PRINT ER>Pr oduction01</LBL_PRINT ER> <LBL_QUANT IT Y>1</LBL_QUANT IT Y> <MAKT X>MASS ONE</MAKT X> <MAT NR>28345</MAT NR> <MEINS>KG</MEINS> <WDAT U>19.01.2012</WDAT U> <QUANT IT Y>1</QUANT IT Y> <EXIDV>012345678901234560</EXIDV> </item> <item> <LBL_NAME>goods_r eceipt.nlbl</LBL_NAME> <LBL_PRINT ER>Pr oduction01</LBL_PRINT ER> <LBL_QUANT IT Y>1</LBL_QUANT IT Y> <MAKT X>MASS T WO</MAKT X> <MAT NR>28346</MAT NR> <MEINS>KG</MEINS> <WDAT U>11.01.2011</WDAT U> <QUANT IT Y>1</QUANT IT Y> <EXIDV>012345678901234577</EXIDV> </item> <item> <LBL_NAME>goods_r eceipt.nlbl</LBL_NAME> <LBL_PRINT ER>Pr oduction01</LBL_PRINT ER> <LBL_QUANT IT Y>1</LBL_QUANT IT Y> <MAKT X>MASS T HREE</MAKT X> <MAT NR>27844</MAT NR> <MEINS>KG</MEINS> <WDAT U>07.03.2009</WDAT U> <QUANT IT Y>1</QUANT IT Y> <EXIDV>012345678901234584</EXIDV> </item> </IT _LABEL_DAT A> </NICELABEL_JOB> </asx:values> </asx:abap>
Aviso
El filtro de datos XML con bloque de datos anidado duplica los valores del área de asignación anterior si una variable está definida en el primer bloque pero no en el segundo. Por ejemplo, se imprimen dos etiquetas. En la primera área de asignación, usted define una variable <manufacturer_serial>
. En la segunda área de asignación, esta variable no está presente.
<?xml ver sion="1.0" encoding="utf-8"?> <asx:abap xmlns:asx="http://www.sap.com/abapxml" ver sion="1.0"> <jobs> <element> <data> <item> <manufacturer_serial>706583012001</manufacturer_serial> <package_code>AA792CY</package_code> </item> </data> <label_filename>serial_number_label.nlbl</label_filename> <print_quantity>1</print_quantity> <printer_name>Warehouse_printer_09</printer_name> </element> <element> <data> <item> <package_code>BE273XS</package_code> </item> </data> <label_filename>serial_number_label.nlbl</label_filename> <print_quantity>1</print_quantity> <printer_name>Warehouse_09</printer_name> </element> </jobs> </asx:abap>
El resultado esperado sería la segunda etiqueta sin los datos de <manufacturer_serial>
. Pero en la impresión real, la segunda etiqueta contendría el valor de <manufacturer_serial>
de la primera etiqueta, que es 706583012001.
Hay cuatro soluciones posibles:
-
Evitar los bloques de datos anidados.
-
Definir los valores de las variables como valores vacíos si las variables no se utilizan en los bloques de datos anidados.
<item> <manufacturer_serial></manufacturer_serial> <package_code>AA792CY</package_code> </item>
-
Utilizar condiciones en las acciones para establecer variables.
-
Utilizar la manipulación de cadenas cuando se detectan las variables faltantes.
El filtro XML identifica automáticamente los campos y sus valores en los datos recibidos. Esto elimina la necesidad de asignación manual variable-a-campo.
La funcionalidad Estructura dinámica es útil si el desencadenador recibe datos con una estructura cambiante. En dichos casos, la estructura principal de los datos permanece sin cambios ( p.ej. los campos están delimitados por coma), o conserva la misma estructura, pero cambia el orden o el número de los campos. Podría haber campos nuevos, o algunos de los campos anteriores podrían ya no estar disponibles. Debido a la Estructura dinámica, habilitada, el filtro identifica automáticamente la estructura del archivo recibido. Al mismo tiempo, el filtro lee los nombres de campos y sus valores (pares name:value
) de los datos. Esto elimina la necesidad de asignación manual de campos a variables.
Usar filtro de datos la acción no ofrece posibilidades de asignación, debido a que realiza la asignación en forma dinámica. Incluso no tendrá que definir las variables de etiquetas en la configuración de los desencadenadores. La acción asignará valores de campo a las variables de las etiquetas del mismo nombre, sin tener que importar las variables de la etiqueta. No obstante, esta regla se aplica solamente a la acción Imprimir etiqueta. Si quiere usar los valores de campo en otra acción, deberá definir variables en el desencadenador, y mantener, al mismo tiempo, la asignación automática de variable a campo.
Nota
No se producirá ningún error si el campo disponible en los datos de entrada no tiene una variable de etiqueta correspondiente. ignora en silencio las variables faltantes.
![]() |
Configurar área de asignación XML
Cuando configura el Bloque de datos como área de asignación, aparecen dos marcadores de posición debajo de la definición de este elemento. Tiene que definir el valor y el nombre del campo, para que el filtro pueda extraer el par nombre-valor
.
-
Nombre de variable: Especifica el elemento que tiene el nombre del campo. El nombre se puede definir según el nombre del elemento, el valor del atributo seleccionado o el valor del elemento. Para habilitar la asignación automática, la variable de etiqueta debe tener el mismo nombre.
-
Valor de variable: Especifica el elemento que tiene el valor del campo. El nombre se puede definir según el nombre del elemento, el valor del atributo seleccionado o el valor del elemento.
Aviso
El elemento XML que tiene el par nombre:valor
no puede ser el elemento de raíz, sino que debe tener al menos un elemento de segundo nivel. Por ejemplo, en el ejemplo de XML de abajo, el elemento <label>
es de segundo nivel y puede tener el par nombre:valor
.
Opciones de formato
Esta sección define las funciones de manipulación de cadenas que se aplicarán a las variables o campos seleccionados. Puede seleccionar una o varias funciones. Las funciones se aplican en el mismo orden seleccionado en la interfaz del usuario: de arriba a abajo.
-
Borrar espacios en el comienzo: borra todos los caracteres de espacio (código 32 ASCII decimal) en el comienzo de la cadena.
-
Borrar espacios en el final: borra todos los caracteres de espacio (valor 32 ASCII decimal) en el final de una cadena.
-
Borrar el carácter de apertura y cierre: borra los caracteres de apertura y cierre seleccionados que aparecen por primera vez en la cadena.
Ejemplo 12. Ejemplo
Si utiliza "{" para el carácter de apertura y "}" para el carácter de cierre, la cadena de entrada
{{selección}}
se convertirá en{selección}
.
-
Buscar y reemplazar: ejecuta la función estándar de buscar y reemplazar a partir de los valores provistos para buscar qué y reemplazar con. También puede usar expresiones comunes.
Nota
Existen varias implementaciones de expresiones comunes en uso. utiliza la sintaxis de .NET Framework para las expresiones comunes. Para obtener más información, consulte Artículo de base de conocimiento.
-
Reemplazar caracteres que no se pueden imprimir con espacios: reemplaza todos los caracteres de control en la cadena con espacios (código 32 ASCII decimal). Los caracteres que no se pueden imprimir son caracteres con valores ASCII decimales entre 0 y 31, y 127 y 159.
-
Borrar caracteres que no se pueden imprimir: borra todos los caracteres de control de la cadena. Los caracteres que no se pueden imprimir son caracteres con valores ASCII decimales entre 0 y 31, y 127 y 159.
-
Descodificar caracteres especiales: descodifica los caracteres (o códigos de control) que no están disponibles en el teclado, como Retorno de carro y Avance de línea. utiliza una notación para codificar dichos caracteres en lenguaje natural, como <CR> para Retorno de carro y <LF> para Avance de línea. Para obtener más información, consulte el tema Introducción de caracteres especiales (Códigos de control).
Esta opción convierte caracteres especiales de la sintaxis en caracteres binarios reales.
Ejemplo 13. Ejemplo
Cuando reciba los datos "<CR><LF>", los usa como una cadena simple de 8 caracteres. Deberá habilitar esta opción para interpretar y usar los datos recibidos como dos caracteres binarios
CR
(Retorno de carro – ASCII código 13) yLF
(Avance de línea – ASCII código 10).
-
Buscar y eliminar todo antes de: Busca la cadena provista y borra todos los caracteres desde el comienzo de los datos hasta la cadena. La cadena buscada también se puede borrar.
-
Buscar y eliminar todo después de: Busca la cadena provista y borra todos los caracteres desde la cadena hasta el fin de los datos. La cadena buscada también se puede borrar.
-
Cambiar grafía: Cambia todos los caracteres de las cadenas a mayúsculas o minúsculas.
Ejemplo
El elemento <label>
está definido como bloque de datos y área de asignación. El nombre de variable se define según el valor del nombre del atributo, el valor de variable se define según el texto del elemento.
<?xml version="1.0" standalone="no"?> <labels _FORMAT="case.nlbl" _PRINTERNAME="Production01" _QUANTITY="1"> <label> <variable name="CASEID">0000000123</variable> <variable name="CARTONTYPE"/> <variable name="ORDERKEY">0000000534</variable> <variable name="BUYERPO"/> <variable name="ROUTE"> </variable> <variable name="CONTAINERDETAILID">0000004212</variable> <variable name="SERIALREFERENCE">0</variable> <variable name="FILTERVALUE">0</variable> <variable name="INDICATORDIGIT">0</variable> <variable name="DATE">11/19/2012 10:59:03</variable> </label> </labels>
Verifique también la muestra de NiceLabel Automation en la carpeta C:\Users\Public\Documents\NiceLabel 10\Automation\Samples\XML Assignment Area
.