Як розмітити XML, YML, JSON і CSV-прайс

6 хв

Розмітка однакова для всіх форматів, різниться адреса: у таблиці це літера чи номер стовпця, в XML — імʼя тега, у JSON — номер колонки розгорнутої таблиці. Elbuz сам знаходить рядок заголовків Excel, роздільник CSV і теги YML-фіду.

Коли це знадобиться:

  • Постачальник дає YML-фід — адреси підбираються автоматично, імена тегів вписувати не треба.
  • XML із власними назвами вузлів — тег товару й теги полів вписуєте руками, AI підказує структуру.
  • У CSV замість заголовків незрозумілі символи — справа в кодуванні файлу, а не в розмітці.
  • Прайс у JSON — файл розгортається в таблицю, адреси задаються номерами колонок.

З чого почати: оберіть свій формат.

Який у вас формат

Логіка розмітки одна для всіх форматів, а от що саме писати в адресу — залежить від того, що надіслав постачальник.

  • Книга ExcelАдреса — літера або номер стовпця; програма сама шукає рядок заголовків
  • CSV, TXT або TSVАдреса — номер стовпця; окремо важать роздільник і кодування файлу
  • XML або YMLАдреса — імʼя тега, атрибути в квадратних дужках; плюс чотири гілки структури фіду
  • JSONАвтопідбору немає зовсім: файл розгортається в таблицю, адреси задаються руками

Які розширення й архіви приймає програма і як вона впізнає фід із чужим розширенням — Які файли підходять.

Де це і хто має доступ

Меню
Довідники → Обробка прайс-листів → Список прайс-листів
Адреси колонок
картка джерела → секція «Колонки»
Структура XML
картка XML-джерела → секція «Структура XML»
Роздільник CSV
картка джерела → секція «Параметри джерела» → «Розділювач колонок»
Право доступу
вікно «Список прайс-листів» у «Правах груп»

Що писати в адресу для книги Excel

Адреса — літера стовпця або його номер. Колонки й приклади значень програма бере з превʼю аркуша, тому в майстрі ви бачите те саме, що й у файлі.

Рядок заголовків шукається як рядок із найбільшою кількістю збігів зі збереженими іменами колонок; якщо не знайшовся — беруть рядок перед першим рядком даних. Службовий рядок нумерації, який малює сам Excel, пропускається. Буває, що імʼя аркуша потрапляє в розмітку як «колонка», — такі рядки програма відкидає, звіряючи їх із назвами аркушів.

Ще одна тонкість, і вона рятує від хибного висновку. Приклади значень у майстрі підбираються за текстом заголовка, і лише якщо такого заголовка в рядку немає — за номером стовпця. Тобто в майстрі ви можете бачити правильні приклади навіть тоді, коли постачальник змістив стовпці.

Сама ж адреса — це літера або номер, і імпорт читає її буквально: переставив постачальник стовпці — адреси треба поправити. Помітити це програма допоможе: після вдалого завантаження вона запамʼятовує заголовки колонок, а наступного разу звіряє з ними новий файл. Як це виглядає — у сценарії «Постачальник вставив колонки на початок файлу».

Як розмітити CSV, TXT і TSV

Адреса — номер або літера стовпця; нумерація йде з одиниці по першому рядку файлу. Дві речі, які вирішують долю такого прайсу, лежать поза розміткою.

Перше — роздільник. Він береться з налаштувань джерела, а якщо не заданий, програма визначає його сама по перших пʼятнадцяти рядках. Табуляцію можна написати як \t. Друге — кодування: якщо в прайсі не позначено, що файл у UTF-8, вміст перекодовується з windows-1251. Коли в майстрі замість заголовків видно «Ð¦ÐµÐ½Ð°», річ саме в кодуванні, а не в розмітці.

Як розмітити XML і YML-фід

Спершу переконайтеся, що вам потрібен саме прайс-лист. XML-файл можна завантажити двома різними способами, і вони ведуть у різні місця. Прайс-лист — це асортимент постачальника: його ціни порівнюються з вашими, товари зіставляються з каталогом, зверху лягає націнка. Імпорт каталогу з XML/YML — це коли фід описує ваш власний асортимент і має лягти в картки напряму, без зіставлень і націнок.

Тут адреса — імʼя тега, а не літера. Атрибут вузла пишеться у квадратних дужках: [id], [available]. Автопідбір звіряє імена тегів зі словником точно, слово в слово. Вписувати таку адресу можна і в клітинці сітки полів картки, і в панелі «Налаштувати колонку» майстра — для XML-джерела перевірка формату там не застосовується.

Складена адреса у фіді працює інакше, ніж у таблиці. Кілька тегів через кому XML-фід склеює — і для ціни теж, тобто правило «береться перше непорожнє» тут не діє; для поля-ціни зі склеєного рядка потім лишаються самі цифри. Виняток той самий, що й у таблиці: значення тегів для «Кількість» додаються.

Склеюються теги так само, як колонки таблиці: впритул, а роздільник задається текстом у фігурних дужках. А от діапазон 7-9 і перелік через вертикальну риску 11|12 у фіді не працюють: адреса там — імʼя тега, дефіс трапляється в самих іменах (offer-name), а вертикальна риска в XPath уже означає обʼєднання вибірок.

Кілька відомих фідів розмічаються однаково, бо теги в них стандартні. Для YML (той самий формат, у якому віддають каталоги більшість майданчиків і CMS) адреси підбираються автоматично — вписувати імена тегів руками не потрібно.

Для Google Merchant теги свої, але теж фіксовані: g:id, title, g:price, g:availability, g:brand, g:mpn, link, g:image_link — їх вписують у поля-приймачі як звичайні адреси.

Якщо ж постачальник надіслав XML із власними назвами вузлів — а так буває частіше, ніж хочеться, — автопідбір не спрацює, і адреси доведеться проставити руками. Це нормальний робочий випадок, а не збій: подивіться сам файл, знайдіть тег товару й теги полів, впишіть їх імена.

Прикладів значень для XML у майстрі немає — замість них у рядках стоїть «—». Це не збій розбору: превʼю для фіда просто не будується, і орієнтуватися доводиться на самі імена тегів.

Крім колонок, для XML задаються чотири гілки структури — окрема секція «Структура XML» у картці: «тег товару», «тег категорії», «тег списку атрибутів», «тег списку фото». Автовизначення заповнює тільки порожні гілки, ваше вже задане не перезаписує. Головна з них — тег товару: без нього фід не розбереться взагалі, і заповнюють його практично завжди.

Секція «Структура XML» картки джерела прайс-листа
1Поле «тег товару»
2Кнопка «Зіставити автоматично»
3Перемикач «Брати курс валют із файлу»
  1. Поле «тег товару» задає назву XML-тегу, що відповідає товару у фіді постачальника.
  2. «Зіставити автоматично» пропонує AI зіставити теги фіду з полями системи.
  3. Перемикач «Брати курс валют із файлу» вмикає перерахунок цін за курсами з блоку currencies фіду.

Для XML у картці є ще й розбір структури фіда з AI: кнопка «Зіставити автоматично» в цій самій секції, під нею — «Знайдені теги» чипами, таблиця «Поле системи ← Тег» з кнопкою «Додати рядок», кнопка «Застосувати зіставлення» і фолд «Зразок вузла товару». Для JSON цього блока немає.

Там-таки живе прапорець «Брати курс валют із файлу (тег currencies)». Підказка пояснює його дослівно: «Якщо ввімкнено, ціни перераховуються за курсами з блоку currencies файлу. Якщо вимкнено — використовуються курси, задані в колонках прайсу або в довіднику валют.»

Дві перевірки, які зупиняють імпорт у решти форматів, для XML не виконуються зовсім: фід піде в роботу і з порожньою розміткою, а повідомлення про незаповнені адреси ви не побачите. Тож для XML «імпорт запустився» ще не означає «розмітка правильна» — дивіться на кількість завантажених товарів і на самі товари.

Як розмітити JSON

Формат підтримується, файл завантажується — але автопідбору для нього немає на жодному з трьох рівнів: ні під час розбору файлу, ні кнопкою, ні автоналаштуванням джерела. Розмітка тут повністю ручна.

Щоб було зрозуміло, що писати в адресу: програма розгортає JSON у таблицю. Вона бере масив товарів — за замовчуванням products, або той, що ви вкажете в полі «тег товару», — перший запис дає назви колонок, решта стають рядками, а вкладені структури розплющуються в окремі колонки. Адреса для JSON — це номер колонки в цій розгорнутій таблиці.

Якщо колонок багато, простіше попросити постачальника про XML або CSV.

Сценарії

Постачальник дає YML-фід

Підключіть фід як звичайне джерело й запустіть імпорт. Що вийде: адреси тегів підберуться автоматично, лишається перевірити тег товару в секції «Структура XML» і кількість завантажених товарів.

Постачальник дає фід Google Merchant

Впишіть у поля-приймачі фіксовані теги Merchant — їх список у розділі про XML. Що вийде: фід читається так само, як YML, і розмітка не зміниться з наступним файлом.

XML із власними назвами вузлів

Відкрийте фолд «Зразок вузла товару», знайдіть тег товару й теги полів. Натисніть «Зіставити автоматично» в секції «Структура XML», а що AI не зіставив — допишіть у таблицю «Поле системи ← Тег». Що вийде: після «Застосувати зіставлення» фід розбереться за вашими тегами.

Що робити, коли фід не розібрався

Розбір частих проблем
Що ви бачитеЧому такЩо зробити
«Не знайдено вузол товару (‹тег›) у XML» У фіді немає вузла з таким імʼям: задана неправильно або порожня Впишіть «тег товару» вручну в секції «Структура XML» — подивіться його у фолді «Зразок вузла товару» (про XML)
«Структуру визначено. AI не зіставив поля — задайте теги вручну нижче.» Структуру фіда розібрано, але пар «поле — тег» AI не запропонував Заповніть таблицю «Поле системи ← Тег» руками й натисніть «Застосувати зіставлення» (про XML)

Часті запитання

У XML замість прикладів значень стоїть «—». Це помилка?

Ні. Для фіда превʼю значень не будується, і в рядках майстра стоїть прочерк. Орієнтуйтеся на імена тегів, а фрагмент фіда подивіться у фолді «Зразок вузла товару» в секції «Структура XML».

Для JSON автопідбір не працює. Що робити?

Розмічати руками. Програма розгортає JSON у таблицю: бере масив товарів (за замовчуванням products), перший запис дає назви колонок. Адреса — номер колонки в цій таблиці.

XML-фід імпортувався без помилки, а товарів немає. Чому?

Перевірки незаповнених адрес для XML не виконуються, тож фід піде в роботу й з порожньою розміткою. Перевірте тег товару і кількість завантажених товарів. Детальніше: розмітка XML.

У майстрі замість заголовків «Ð¦ÐµÐ½Ð°». Що не так?

Кодування: якщо в прайсі не позначено, що файл у UTF-8, вміст перекодовується з windows-1251. Детальніше: CSV, TXT, TSV.

XML описує мій власний асортимент, а не постачальника. Що обрати?

Не прайс-лист, а імпорт каталогу з XML/YML: фід ляже в картки напряму, без зіставлень і націнок.

Суміжні теми

Чи була стаття корисною?