XML/YML de proveedor: carga, snapshot y transformaciones

Cómo Eofferix recibe archivos y respuestas XML/YML, crea un snapshot de elementos y atributos y transforma los datos en JSON, tablas, otro XML/YML o una importación.

Eofferix recibe archivos XML/YML y respuestas XML/YML. Los datos pueden cargarse una vez, recibirse automáticamente desde un adjunto de email, descargarse por URL directa, por URL con autorización, mediante FTP/FTPS/SFTP o desde la API del proveedor.

Después de cargar el archivo de origen, el servicio crea un snapshot XML con el que se configura la estructura del resultado. Luego XML/YML puede transformarse en JSON, tablas CSV/XLSX, otro XML/YML con elementos, atributos y valores editados, o importarse en aplicaciones compatibles con el servicio.

Snapshot XML de proveedor en Eofferix
El snapshot XML muestra elementos únicos, atributos y ejemplos de valores del archivo del proveedor.

Cómo Funciona El Snapshot XML

Después de cargar el archivo de origen, Eofferix lo analiza y lo convierte en un snapshot corto con elementos únicos, atributos y valores de ejemplo. Si el documento contiene mil productos, el snapshot muestra un elemento repetido típico en lugar de mil ramas iguales.

En el snapshot puedes renombrar elementos y atributos, cambiar la estructura, quitar ramas innecesarias, crear nodos nuevos y configurar reglas de transformación. YML se procesa igual: el servicio lee catálogo, categorías, ofertas, precios, stock y parámetros como una estructura XML.

Qué Se Puede Transformar

  • Renombrar elementos y atributos. En el XML real, un atributo se escribe sin @: <offer id="A-100">. En rutas y listas de Eofferix se muestra como @id; se puede renombrar para obtener <product external_id="A-100">, y <name> puede convertirse en <title>.
  • Filtrar registros. Dejar solo ofertas con @available = true, productos con stock mayor que cero o elementos de una categoría necesaria.
  • Cambiar la anidación. Mover el precio desde un atributo a un elemento separado, reunir valores <param> en características y colocar imágenes en el contenedor requerido.
  • Calcular valores. Calcular precio con margen, porcentaje de descuento, ruta de categoría, fecha de importación o un valor basado en un nodo XML cercano.
  • Transformar imágenes. Convertir imágenes a jpg/png/webp, cambiar su tamaño o aplicar una marca de agua.
  • Importar en una aplicación. Vincular elementos y atributos XML con campos de catálogo, CMS, CRM, marketplace u otro destino compatible.
Ajustes del valor Precio con reglas de transformación XML
Ejemplo de transformaciones secuenciales para el valor XML Precio. Las reglas pueden usar el valor actual, nodos cercanos y atributos del documento.

Ejemplos De Transformaciones

La herramienta de transformación permite cambiar mucho el XML/YML final: filtrar elementos innecesarios, renombrar nodos y atributos, crear una estructura nueva, calcular valores mediante reglas y preparar el resultado para un sitio, marketplace, PIM o sistema interno.

Qué Hace El Ejemplo De Precio

Las reglas siguientes están divididas por pasos. Cada captura muestra solo la fila de regla responsable del paso actual.

1. Primero eliminamos espacios del valor del precio. Esto ayuda cuando el proveedor envía el precio como texto, por ejemplo 12 990, dentro de un nodo XML.

Eliminar espacios del valor XML del precio

2. Si el precio no está vacío, el servicio lo aumenta un 15%. Así se añade margen sin cambiar el XML de origen.

Paso 2: calcular margen para el precio XML

3. Después, la regla revisa otro nodo del documento: /catalog/items/stock/qty. Si el stock es menor que 5, el precio se reemplaza por 0.

Paso 3: stock menor que 5 - reemplazar precio por 0

4. Otra regla usa el nodo /catalog/items/brand: para TestBrand, el precio se multiplica además por 1,5.

Paso 4: TestBrand - multiplicar precio por 1,5

5. Al final, el resultado se redondea a un decimal con reglas estándar.

Paso 5: redondear el resultado

Ejemplo Simple: Renombrar Elementos Y Dejar Productos Activos

En este ejemplo tomamos elementos repetidos catalog.items.item, dejamos solo productos activos y adaptamos los nombres de elementos al formato de exportación de destino.

Antes
XML de origen
<catalog>
  <items>
    <item id="A-100" active="true">
      <name>Sillón Nordic</name>
      <brand>Nordic Home</brand>
      <prices>
        <base currency="USD">129.90</base>
        <discount currency="USD">119.90</discount>
      </prices>
    </item>
  </items>
</catalog>
Después
después de configurar
<catalog>
  <products>
    <product external_id="A-100">
      <title>Sillón Nordic</title>
      <brand>Nordic Home</brand>
      <price currency="USD">119.90</price>
      <old_price currency="USD">129.90</old_price>
    </product>
  </products>
</catalog>

Reglas:

  1. En el XML de origen hay un producto con id = A-100. Los demás productos tienen la misma estructura, pero el snapshot muestra un elemento representante de la rama repetida catalog.items.item. Haz clic en el valor true del atributo active y en Condiciones de exportación elige Condición para todo el elemento. Así se exportan solo elementos con true, o se excluyen elementos con false.
    Condiciones de exportación para un elemento XML activo
    La condición se aplica al elemento completo: el producto se exporta si active es igual a true; la segunda regla puede usarse como comprobación inversa para false.
  2. Renombra el atributo id a external_id: haz clic en el atributo o nombre del nodo e introduce el nombre nuevo.
    Renombrar el atributo XML id a external_id
    Ajustes del nodo: external_id se introduce en el campo Nombre del nodo.
  3. Renombra el elemento name a title del mismo modo.
  4. Hay dos escenarios válidos para los precios. Si el contenedor prices sirve, renombra discount a price y base a old_price. Si price y old_price deben estar al nivel del producto, crea nodos nuevos junto a title y rellénalos desde /catalog/items/item/prices/discount y /catalog/items/item/prices/base. También puedes cambiar la estructura de un nodo: pasa el cursor sobre el nombre del nodo y, en el menú que aparece, haz clic en la flecha izquierda para subirlo al nivel de los demás nodos del elemento.

Nodos Nuevos

Un nodo XML nuevo es necesario cuando el resultado debe contener un campo que no existe en el XML/YML de origen, o cuando los datos de origen deben reorganizarse.

Agregar el nodo final_price en el snapshot XML

Un nodo se puede rellenar con:

  1. un valor de otra parte del archivo de origen. Por ejemplo, si el XML contiene <name>Producto de prueba</name>, <article>111-111</article> y <brand>MarcaTest</brand>, se pueden combinar en un nodo nuevo: <FullName>Producto de prueba 111-111 MarcaTest</FullName>;
  2. un valor del sistema, como la fecha de ejecución o el nombre de la fuente;
  3. una expresión, por ejemplo unir la ruta de categoría o calcular el porcentaje de descuento;
  4. también se puede convertir en variable.

Variables: Por Qué Son Necesarias

Una variable guarda un resultado intermedio. Es práctica cuando un valor debe usarse en varios campos o condiciones.

Importante: las variables no aparecen en la exportación final. Solo ayudan a otras transformaciones: puedes guardar un resultado intermedio y usarlo después en reglas, condiciones o cálculos.

Configurar el nodo XML final_price como variable
Un nodo puede convertirse en variable: se calcula antes que los demás campos y luego se usa en reglas y condiciones.

Por ejemplo, la variable final_price se calcula una vez:

  • final_price se escribe en <price>;
  • <old_price> se rellena con el precio base cuando final_price es menor que el precio base;
  • la condición de exportación comprueba que final_price sea mayor que cero;
  • otra regla usa final_price para calcular el descuento.

Así las reglas quedan más cortas y el precio no difiere entre distintas partes del resultado por cálculos manuales repetidos.