E-commerce & Produktové feedy

XML feed

Produktový feed ve formátu XML

Co je XML feed

XML feed je produktový feed uložený ve formátu XML, tedy v textovém souboru, kde je každá položka popsaná pojmenovanými elementy. Jeden produkt odpovídá jednomu bloku, uvnitř kterého má cena, dostupnost, obrázek i identifikátory svůj vlastní element.

Proč se v Česku ustálil zrovna XML

Vynutily si ho srovnávače. Heureka i Zboží.cz mají publikovanou specifikaci s přesně danými názvy elementů, takže soubor buď odpovídá dokumentaci, nebo se nenačte. Google je smířlivější a bere i tabulkové formáty, přesto mu většina českých e-shopů posílá XML: platforma ho generuje tak jako tak. CSV nebo přímé napojení přes API má smysl u projektů, kde se data skládají z několika systémů a jeden export by je neposbíral.

Kde to nejčastěji drhne

  • znaky, které XML nedovolí: ampersand, ostré závorky a řídicí znaky z popisů nakopírovaných z Wordu rozbijí soubor hned při prvním parsování
  • neuzavřené elementy
  • kódování jiné než UTF-8, typicky u exportů ze starších skladových systémů
  • feed, který se sestavuje až ve chvíli, kdy si o něj robot řekne; u desítek tisíc položek se stahování nestihne a srovnávač si odnese půlku souboru nebo nic

Poslední bod stojí za rozvedení. Generovat feed na každý požadavek je pohodlné, protože data jsou vždycky čerstvá, jenže u velkého sortimentu to znamená dlouhé sestavování a zbytečnou zátěž databáze. Řešení je nudné: nechat soubor předgenerovat do statické podoby v rozumném intervalu a robotovi servírovat hotové.

Validátor si otevírám dřív, než se pustím do obsahu polí. Když Heureka hlásí, že feed nenačetla, bývá za tím neescapovaný ampersand v názvu nebo timeout při stahování, a obojí poznám během minuty. Teprve když soubor projde, má cenu řešit, jestli jsou v něm produkty popsané dobře; tuhle část vedu u pojmu produktový feed.

Časté otázky

Jaký je rozdíl mezi XML feedem a produktovým feedem?

Produktový feed je obsah, XML je formát, ve kterém se ten obsah odesílá. Stejná data lze poslat i v CSV nebo přes API. V českém prostředí se prosadilo XML, protože ho vyžadují srovnávače.

Proč srovnávač hlásí, že feed nelze načíst?

Obvykle kvůli neplatnému znaku, neuzavřenému elementu nebo špatnému kódování. Druhá běžná příčina je čas: pokud se soubor sestavuje déle, než robot čeká, stahování selže, i když je feed jinak správný.

Jak si ověřím, že je XML feed v pořádku?

Otevřít ho v prohlížeči nebo v XML validátoru: nevalidní soubor spadne na první chybě a ukáže řádek. Srovnávače k tomu mají vlastní kontrolu ve svém rozhraní, která navíc hlásí chybějící povinná pole.