🐮 Jak stanovit pořadí elementů v XML feedu

Návod jak pomocí aplikace Blending Bull stanovit pořadí elementů v XML feedu.

O pořadí elementů v XML

MERGADO negarantuje pořadí, ve kterém elementy do jedné SHOPITEM zapíše. Příčinou je mé rozhodnutí, kdy před mnoha lety se mne vývojáři ptali, zda v XML rozlišovat pořadí elementů a já řekl, že podstatný je název elementu, nikoliv jeho pořadí uvnitř dané SHOPITEM. Tehdy to platilo ve 100 % nám známých formátů.

Od té doby přišly další systémy a dnes toto stále platí u valné většiny z nich. MERGADO se naučilo pořadí elementů zohledňovat na úrovni formátů. U vybraných formátů, kde ví, že pořadí podstatné je, tedy pořadí elementů řeší. Jen si ho (zatím) uživatel nemůže definovat sám.

Mohou nastat situace, kdy Vám pořadí definované Mergadem, či jiným systémem, vyhovovat nebude. Pro tyto případy jsem napsal následující návod.

Jak posunout element v XML feedu na první místo

Potřebovat budeme znát dva elementy. Jednak kořenový element položky zboží, v našem případě ITEM, a také název elementu, který budeme chtít umístit ihned za kořenový element. Pro zpracování použijeme pravidlo Najít a nahradit. V následujícím příkladu budeme na první místo za ITEM posouvat element NAME.

Pravidlo zpracuje řádek. Obsah zpracuje do skupin:

<ITEM>(.*)<NAME>(.*)<\/NAME>(.*)<\/ITEM>
kdy v první skupině bude veškerý obsah mezi <ITEM> a <NAME>, ve druhé skupině obsah elementu NAME a ve třetí skupině veškerý obsah mezi </NAME> a </ITEM>.

Následně výsledek zapíšeme do výstupu takto:

<ITEM><NAME>\g<2></NAME>\g<1>\g<3></ITEM>
tedy vezmeme obsah NAME, dáme ho na první místo za ITEM a pak dáme obsah jak první tak třetí skupiny viz výše. Tím posuneme element NAME na první místo.

Obdobně bychom zapsali pravidla pro jiné názvy elementů.

Jak stanovit pořadí více elementů

Uvedené pravidlo posune jeden konkrétní element na 1. místo. Pokud následně vytvoříte druhé pravidlo pro jiný element, to přesune druhý element na 1. místo a element z prvního pravidla na 2. místo. A tak můžete pokračovat. Jednotlivými pravidly jednotlivé elementy posouvat na první místo a ostatní elementy odsunout dál.

Ač může znít uvedený postup složitě, v praxi je jednoduchý a funguje.

Celé nastavení v Belnding Bull

  1. Vytvořte pravidlo pro zpracování dat do tabulky. Připraví data pro další zpracování.
  2. Vytvořte první pravidlo pro stanovení pořadí.
  3. Tvořte případná další pravidla pro stanovení pořadí.

Výsledná konfigurace pravidel může vypadat např. takto. Pravidlo na prvním řádku je vypnuté, následuje konverze dat do tabulky a pravidla pro stanovení pořadí elementů NAME, PRICE_VAT, URL, kde NAME bude první v pořadí. Dále jsem smazal nepotřebný obsah, doplnil novou hlavičku a patičku XML souboru, přičemž tyto kroky jsou nepovinné.

Kde využít pořadí elementů

Uvedený postup se hodí pro různé prototypování, testování a podobně. Zkrátka pro situace, kdy pořadí elementů potřebujete stanovit sami dle vlastních preferencí a systém generující data Vaše přání nereflektuje. Osobně se aktuálně bavím např. s feedem pro Mall Marketplace, kde je pořadí elementů podstatné. Vy jistě najdete vlastní využití.

Nechť Vám Blending Bull slouží dobře :wink:

2 Likes