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.

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.

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.

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.

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.

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

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

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.
<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><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:
- 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 repetidacatalog.items.item. Haz clic en el valortruedel atributoactivey en Condiciones de exportación elige Condición para todo el elemento. Así se exportan solo elementos contrue, o se excluyen elementos confalse.
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. - Renombra el atributo
idaexternal_id: haz clic en el atributo o nombre del nodo e introduce el nombre nuevo.
Ajustes del nodo: external_id se introduce en el campo Nombre del nodo. - Renombra el elemento
nameatitledel mismo modo. - Hay dos escenarios válidos para los precios. Si el contenedor
pricessirve, renombradiscountapriceybaseaold_price. Sipriceyold_pricedeben estar al nivel del producto, crea nodos nuevos junto atitley rellénalos desde/catalog/items/item/prices/discounty/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.

Un nodo se puede rellenar con:
- 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>; - un valor del sistema, como la fecha de ejecución o el nombre de la fuente;
- una expresión, por ejemplo unir la ruta de categoría o calcular el porcentaje de descuento;
- 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.

Por ejemplo, la variable final_price se calcula una vez:
final_pricese escribe en<price>;<old_price>se rellena con el precio base cuandofinal_pricees menor que el precio base;- la condición de exportación comprueba que
final_pricesea mayor que cero; - otra regla usa
final_pricepara 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.