XML/YML fournisseur : chargement, snapshot et transformations

Comment Eofferix reçoit des fichiers et réponses XML/YML, crée un snapshot des éléments et attributs, puis transforme les données en JSON, tableaux, autre XML/YML ou import.

Eofferix reçoit des fichiers XML/YML et des réponses XML/YML. Les données peuvent être chargées une fois, reçues automatiquement depuis une pièce jointe email, récupérées par URL directe, par URL avec autorisation, via FTP/FTPS/SFTP ou depuis l’API fournisseur.

Après le chargement du fichier source, le service crée un snapshot XML qui sert à configurer la structure du résultat. XML/YML peut ensuite être transformé en JSON, tableaux CSV/XLSX, autre XML/YML avec éléments, attributs et valeurs modifiés, ou importé dans les applications prises en charge par le service.

Snapshot XML fournisseur dans Eofferix
Le snapshot XML montre les éléments uniques, attributs et exemples de valeurs du fichier fournisseur.

Fonctionnement Du Snapshot XML

Après le chargement du fichier source, Eofferix l’analyse et le transforme en snapshot court avec éléments uniques, attributs et exemples de valeurs. Si le document contient mille produits, le snapshot affiche un élément répété type au lieu de mille branches identiques.

Dans le snapshot, vous pouvez renommer les éléments et attributs, modifier la structure, retirer les branches inutiles, créer de nouveaux noeuds et configurer des règles de transformation. YML est traité de la même façon : le service lit catalogue, catégories, offres, prix, stocks et paramètres comme une structure XML.

Ce Qui Peut Être Transformé

  • Renommer des éléments et attributs. Dans le XML lui-même, un attribut s’écrit sans @ : <offer id="A-100">. Dans les chemins et listes Eofferix, il apparaît comme @id ; il peut être renommé pour obtenir <product external_id="A-100">, et <name> peut devenir <title>.
  • Filtrer les enregistrements. Garder seulement les offres avec @available = true, les produits dont le stock est supérieur à zéro ou les éléments d’une catégorie donnée.
  • Modifier l’imbrication. Déplacer un prix depuis un attribut vers un élément séparé, regrouper les valeurs <param> en caractéristiques et placer les images dans le conteneur attendu.
  • Calculer des valeurs. Calculer un prix avec marge, un pourcentage de remise, un chemin de catégorie, une date d’import ou une valeur basée sur un noeud XML voisin.
  • Transformer les images. Convertir les images en jpg/png/webp, les redimensionner ou appliquer un filigrane.
  • Importer dans une application. Relier les éléments et attributs XML aux champs d’un catalogue, CMS, CRM, marketplace ou autre destination prise en charge.
Paramètres de la valeur Prix avec règles de transformation XML
Exemple de transformations séquentielles pour la valeur XML Prix. Les règles peuvent utiliser la valeur courante, des noeuds voisins et des attributs du document.

Exemples De Transformations

L’outil de transformation permet de modifier fortement le XML/YML final : filtrer les éléments inutiles, renommer noeuds et attributs, créer une nouvelle structure, calculer des valeurs par règles et préparer le résultat pour un site, une marketplace, un PIM ou un système interne.

Ce Que Fait L’exemple De Prix

Les règles ci-dessous sont séparées par étapes. Chaque capture montre seulement la ligne de règle responsable de l’étape courante.

1. On supprime d’abord les espaces dans la valeur du prix. C’est utile lorsque le fournisseur envoie le prix comme texte, par exemple 12 990, dans un noeud XML.

Supprimer les espaces de la valeur XML du prix

2. Si le prix n’est pas vide, le service l’augmente de 15 %. Cela ajoute une marge sans modifier le XML source.

Étape 2 : calculer la marge du prix XML

3. Ensuite, la règle regarde un autre noeud du document : /catalog/items/stock/qty. Si le stock est inférieur à 5, le prix est remplacé par 0.

Étape 3 : stock inférieur à 5 - remplacer le prix par 0

4. Une autre règle utilise le noeud /catalog/items/brand : pour TestBrand, le prix est en plus multiplié par 1,5.

Étape 4 : TestBrand - multiplier le prix par 1,5

5. À la fin, le résultat est arrondi à une décimale selon les règles standard.

Étape 5 : arrondir le résultat

Exemple Simple : Renommer Les Éléments Et Garder Les Produits Actifs

Dans cet exemple, nous prenons les éléments répétés catalog.items.item, gardons seulement les produits actifs et adaptons les noms d’éléments au format d’export cible.

Avant
XML source
<catalog>
  <items>
    <item id="A-100" active="true">
      <name>Fauteuil Nordic</name>
      <brand>Nordic Home</brand>
      <prices>
        <base currency="USD">129.90</base>
        <discount currency="USD">119.90</discount>
      </prices>
    </item>
  </items>
</catalog>
Après
après configuration
<catalog>
  <products>
    <product external_id="A-100">
      <title>Fauteuil Nordic</title>
      <brand>Nordic Home</brand>
      <price currency="USD">119.90</price>
      <old_price currency="USD">129.90</old_price>
    </product>
  </products>
</catalog>

Règles :

  1. Le XML source contient un produit avec id = A-100. Les autres produits suivent la même structure, mais le snapshot affiche un représentant de la branche répétée catalog.items.item. Cliquez sur la valeur true de l’attribut active, puis dans Conditions d’export choisissez Condition pour tout l’élément. Cela permet d’exporter seulement les éléments à true, ou d’exclure les éléments à false.
    Conditions d’export pour un élément XML actif
    La condition s’applique à l’élément complet : le produit est exporté si active vaut true ; la deuxième règle peut servir de contrôle inverse pour false.
  2. Renommez l’attribut id en external_id : cliquez sur le nom de l’attribut ou du noeud et saisissez le nouveau nom.
    Renommer l’attribut XML id en external_id
    Paramètres du noeud : external_id est saisi dans le champ Nom du noeud.
  3. Renommez l’élément name en title de la même façon.
  4. Deux scénarios fonctionnent pour les prix. Si le conteneur prices convient, renommez discount en price et base en old_price. Si price et old_price doivent être au niveau du produit, créez de nouveaux noeuds à côté de title et remplissez-les depuis /catalog/items/item/prices/discount et /catalog/items/item/prices/base. Vous pouvez aussi modifier directement la structure d’un noeud : survolez le nom du noeud puis, dans le menu affiché, cliquez sur la flèche vers la gauche pour le remonter au niveau des autres noeuds de l’élément.

Nouveaux Noeuds

Un nouveau noeud XML est nécessaire lorsque le résultat doit contenir un champ absent du XML/YML source, ou lorsque les données source doivent être réorganisées.

Ajout du noeud final_price dans le snapshot XML

Un noeud peut être rempli avec :

  1. une valeur venant d’une autre partie du fichier source. Par exemple, si le XML contient <name>Produit test</name>, <article>111-111</article> et <brand>MarqueTest</brand>, ils peuvent être combinés dans un nouveau noeud : <FullName>Produit test 111-111 MarqueTest</FullName>;
  2. une valeur système, comme la date d’exécution ou le nom de la source;
  3. une expression, par exemple assembler le chemin de catégorie ou calculer le pourcentage de remise;
  4. il peut aussi être transformé en variable.

Variables : Pourquoi Elles Sont Utiles

Une variable stocke un résultat intermédiaire. Elle est pratique quand une valeur doit être utilisée dans plusieurs champs ou conditions.

Important : les variables n’apparaissent pas dans l’export final. Elles servent uniquement à aider les autres transformations : vous pouvez stocker un résultat intermédiaire puis l’utiliser dans des règles, conditions ou calculs.

Configurer le noeud XML final_price comme variable
Un noeud peut être transformé en variable : il est calculé avant les autres champs puis utilisé dans les règles et conditions.

Par exemple, la variable final_price est calculée une seule fois :

  • final_price est écrit dans <price>;
  • <old_price> reçoit le prix de base quand final_price est inférieur au prix de base;
  • la condition d’export vérifie que final_price est supérieur à zéro;
  • une autre règle utilise final_price pour calculer la remise.

Les règles restent ainsi plus courtes, et le prix ne diverge pas entre différentes parties du résultat à cause de calculs manuels répétés.