Формат yml парсер данных в html. Сравнение Json и YAML

Станислав Шашалевич

Парсер контента – наше глобальное и передовое решение, которое позволяет парсить каталоги, страницы и rss ленты. Казалось бы, что еще можно требовать от данного модуля?! Но не тут-то было. Наши клиенты не стоят на месте и постоянно требуют от нас развития решения. А мы этому только рады. И вот теперь мы хотим сообщить, что удовлетворили еще одну очень важную просьбу наших клиентов: Парсинг XML файлов. Теперь Парсер может работать не только с rss, page, catalog типами данных, но и с xml . И что самое главное: внедрение такого полезного функционала никак не повлияет на стоимость решения. Цена решения в 14 990 руб. останется неизменной.

Парсинг xml файлов позволяет парсить и такой полезный для интернет-магазинов формат, как YML файлы. Именно поэтому xml парсер по умолчанию настроен для парсинга yml выдачи. Но тут же у наших клиентов может возникнуть вопрос: А чем же ваша загрузка YML файлов отличается от аналогичных решений в Маркетплейсе. Вот список некоторых преимуществ нашего модуля над аналогами:

  • возможность конвертации и пересчета валют
  • возможность изменения цен
  • возможность редактирования названия и свойств товаров
  • возможность указания свойств по умолчанию
  • возможность авторизации на стороннем сервере
  • выполнять различные действия над элементами, которые отсутствуют в текущей выгрузке(ничего не делать, удалить, деактивировать)
  • автоматический перевод текста
  • возможность периодического запуска (агенты, крон)
  • возможность указания полей и свойств для обновления
  • возможность использования прокси-сервера
Если сравнивать парсинг xml с catalog , то парсинг xml уже на первый взгляд проще: меньше вкладок, полей и другой информации. Скорость загрузки информации тоже быстрее, так как отсутствует множество тяжелых запросов на сторонние сайты.

Суть парсинга осталась аналогичная: обработка xml файла идет по селекторам и атрибутам. Так что, если вы уже настраивали парсер catalog , то настройка парсера нового типа для Вас пройдет просто и легко.

А теперь давайте подробнее рассмотри функциональность нового типа данных:

Вкладка Парсер:

Тип парсера – соответственно и есть тип парсера: rss, page, catalog, xml

Режим парсера – режим, в котором работает парсер. Существует два режима работы: debug и work. По умолчанию для отладки используется debug режим. Именно в этом режиме необходимо настраивать парсер. В debug режиме осуществляется парсинг первых 30 элементов XML файла.

Стоит отметить, что, если вы используете модуль «Парсер контента» в триал версии, то парсер работает только в дебаг режиме.

Дополнительные урлы XML файлов - вы можете также включить в выгрузку и другие урлы xml файлов. Для этого просто укажите их с новой строки.

ID инфоблока-каталога – инфоблок, в который будет осуществляться загрузка разделов и товаров.

ID раздела – раздел инфоблока, в который будет осуществляться загрузка разделов и товаров.

Количество товаров, выгружаемых за один шаг парсера – количество товаров, который парсер обрабатывает за один шаг. По умолчанию 300

Шаг парсера – понятие, которое имеет место при ручном режиме запуска парсера. В этом случае каждый шаг происходит отключение и новое подключение к каналу выгрузки. Варьируйте это значение в зависимости от возможностей вашего хостинга. Если парсер работает от агента(крон), то шаг парсера игнорируется, и выгрузка осуществляется одним запросом.

Активен, Сортировка, Название, Время последнего запуска – интуитивно понятные поля и в комментариях не нуждаются.

Кодировка - кодировка xml файла. Устаревшее поле. На данный момент кодировка определяется автоматически, но, если возникают какие-то проблемы с кодировкой, то рекомендуется указать вручную.

Вкладка Основные настройки - Категории

Пример XML файла для категорий:

Селектор-атрибут названия категории – указывается путь к названию категории. Если пусто, то название берется из значения самой категории

Селектор-атрибут, содержащий id категории – путь к id категории.

Селектор-атрибут, содержащий id родительской категории – для организации вложенности разделов необходимо указать пусть к значению родительского id категории.

Вкладка Основные настройки - Товары

Пример XML файла для товаров:

Селектор конкретного товара – путь к контейнеру конкретного товара

Селектор-атрибут, содержащий id товара – путь к id товара

Селектор-атрибут названия товара – путь к наименованию товара

Селектор-атрибут цены – контейнер, содержащий значение цены товара

Селектор-атрибут описания – содержит описание товара

Селектор-атрибут превью картинки – путь к картинке

Селектор-атрибут детальной картинки – путь к картинке

Вкладка Свойства

Свойство доп. картинок – если есть доп. картинки, то необходимо указать поля, в которые будет осуществляться выгрузка картинок.

Селектор-атрибут перечисления доп. картинок – указывается селектор и атрибут доп. картинок. Пример picture. Указывается относительно селектора товара.

Значения свойств по умолчанию – можно указать значения свойств, которые будут заноситься по умолчанию автоматически при создании товаров

Парсинг по селектору – вы можете указать конкретный селектор свойства, который находится внутри селектора товара в xml. Например: vendor, barcode

Удалять символы – также вы можете удалять лишние символы в свойствах(единицы измерения и прочее)

Парсинг свойств и автоматическое создание - позволяет автоматически создавать, заполнять и обновлять свойства, которые идут списком в xml файле.

Уникализация свойств в данном случае идет по наименованию.

Автоматическое создание свойств – если галочка отмечена, то, в случае отсутствия свойства, оно будет создавать. Если свойство уже есть

Селектор-атрибут перечисления свойств – общий селектор, в котором находятся информация о свойстве

Селектор-атрибут названия свойства – путь расположения названия свойства. Напоминаем, что это важный параметр, так как уникализация в данном случае идет именно по этому параметру.

Селектор-атрибут значения свойства – путь к значению свойства. Если ничего не задано, то значение берется непосредственно из селектора свойства

Выберите тип создаваемых свойств – если свойства не создавались, то они будут созданы. Необходимо выбрать тип новых свойств из значений: Список или Строка.

Удалять символы – позволяет удалять лишние символы из свойств.

Добавление/удаление символов полей и свойств – функционал, позволяющий добавлять и удалять символы и названия товара, а также у его свойств.

Вкладки Торговый каталог, Дополнительные настройки, Обновления/уникальность, Логи, Видео-инструкци идентичны парсеру типа catalog . Поэтому подробно их рассматривать не будем.

Вкладка Торговый Каталог

Вкладка позволяет гибко работать с ценами:

Указывать параметры цены и валюты

Конвертировать валюту

Изменять цены

Округлять цены

Вкладка Дополнительные настройки:

Вкладка Обновление/Уникальность:

Вкладка позволяет задать параметры уникализации, а также настроить обновление полей товаров.

  1. Введение. Краткое описание технологии парсинга Яндекс XML. Варианты применения: импорт из других движков магазнов + создание магазинов (или товарных разделов) для заработка на партнерках.
  1. Решение ПЕРВОЙ задачи: автоматизированная переливка товаров со старого магазина на новый
  2. Установка тестового магазина, своими силами
  3. Открытие хостинга (бесплатный период) для установки магазина
  • Установка магазина инсталлятором
  • Вход в админку установленного магазина и первые действия по активации магазина
    1. Очистка тестового магазина от демо-контента: удаление записей, рубрик, тегов, страниц, слайдов, баннеров, меню
    1. Установка плагина парсера через админку плагинов
    2. Создание проекта для парсинга
    3. Краткий обзор, что такое Яндекс XML формат
    4. Заполнение данных проекта, запуск анализа YML-источника
    5. Запуск импорта
    6. Пояснение отличия бесплатной версии парсера (с лимитом на 100 товаров) от платной (безлимитной)
    7. Обзор результатов парсинга, внимание на совершенную ошибку
    8. Откат импорта: удаление импортированного контента, проверка что все удалено.
    9. Повторный импорт, обзор результатов: рубрики, записи.
    10. Обзор импортированной записи в админке: название, описание, цена товара, миниатюра
    11. Обзор перенесенных товаров на фронтенде сайта: архив рубрики товаров, страничка 1 товара
    1. Создание главной страницы тестового магазина, с витриной. Тестовый магазин готов! Прототип магазина, на основе Вашего товара со старого магазина, можно тестировать.
    1. Услуга переноса контента со старого магазина на новый, с помощью студии WP Shop
    2. Краткое описание услуги
    3. Очистка тестового магазина для импорта образца файла, который клиент получает после оказания услуги
    4. Импорт образца файла, встроенным импортером ВордПресс
    5. Обзор результатов импорта
    6. Дополнительные сведения об услуге. Решим любые сложности.
    1. Решение ВТОРОЙ задачи: создание псевдо-магазина (или раздела с товарами) для продажи товаров других интернет-магазинов
    2. Общий обзор ситуаций, когда есть желание или необходимость поставить партнерский товар на свой сайт или магазин.
    3. Основная сложность — автоматизация процесса переноса товаров и периодического обновления ассортимента. Плагин решает все эти проблемы
    1. Практический кейс: ставим партнерский товар на свой магазин
    2. Одно из преимуществ тем от студии WP Shop: замена действия по клику на кнопку «купить» в случае указания партнерской ссылки
    3. ОБЯЗАТЕЛЬНЫЙ БЕКАП перед импортом сторонних товаров парсером
    4. Установка парсера, пояснения отличия бесплатного парсера от платного. Демонстрация возможностей парсера на платной версии
    1. Редактирование шаблона парсинга для добавления партнерских ссылок
    2. Обзор редактора шаблонов парсинга: зона для контента записи, зона для дополнительных полей
    3. Составление партнерской ссылки в редакторе шаблона парсинга
    4. Запуск парсинга, обзор результатов: новые рубрики, новые товары. Обзор нового товара.
    5. Демонстрация логики события по клику на кнопку «купить» — посетитель переходит на сайт магазина-поставщика.
    1. Обновление данных и синхронизация ассортимента с магазином-источником
    2. Обновления при изменении цен, ассортимента на магазине-источнике. Автоматизация экономит огромное количество времени и сил!
    3. Реакция на изменение цен, пример обновления, обзор результата
    1. Реакция на удаление товаров из источника: пример обновления, просмотр результатов. Товар не удаляется а становится в режим «нет в продаже»
    1. Реакция на добавление товаров в источнике: пример обновления, просмотр результатов
    1. Обновление товаров автоматически по расписанию: через крон сервера.
    2. Обзор урла для обновления …/wp-admin/tools.php?iy-ajax&iy-project-id=1 &iy-project-action=update
    3. Настройка крона на хостинге ХостЛенд: синтаксис команды на запуск и настройка периодичности запуска
    1. Результаты срабатывания задания из крона: просмотр результатов
    1. Импорт товаров из трех разных источников
    2. Копирование шаблона из предыдущего проекта
    3. Изменяем структуру партнерской ссылки
    4. Запуск мпорта товаров из второго магазина. Обзор источника XML второго магазина. Просмотр результатов импорта
    1. Пояснения по импорту из полей «param» — они автоматически пишутся в произвольные поля
    1. Обзор результатов импорта из второго магазина
    2. Обзор логики вывода «связанных товаров» в товарной записи
    1. Импорт из третьего магазина
    2. Обзор особенностей XML-фида из партнерского агрегатора Mixmarket.biz для настройки его парсинга
    3. Редактирование шаблона импорта под третий магазин
    4. Запуск импорта
    5. Обзор результатов
    1. Исправление ошибок, выявленных после парсинга
    2. Удаление импортированного контета
    3. Изменение партнерской ссылки, удаление лишнего параметра
    4. ВАЖНАЯ информация по теме риска писсимизации поисковиками в связи с прямым переносом контента с других сайтов: нужно закрывать перенесенный контент NOINDEX и NOFOLLOW!
    5. Пояснения, зачем нужно закрывать импортированные товары от индексации на своем сайте
    6. Пояснение, как сделать страницу из чужих товаров, повысив уровень оригинальности, за счет «замешивания» между собой товаров из разных партнерок, а так же статей и прочего
    7. Пояснение, как технически исключить запись импортированного товара из индексации, через мета-тег «robots» и плагине Platinum SEO
    8. Исправляем шаблон импорта для того чтобы прописать всем импортированным товарам запрет на индексацию поисковиками
    9. Запуск импорта, просмотр результата. Убеждаемся что все импортированные записи защищены от индексации. Риск писсимизации за плагиат уменьшен (снят).
    1. Заключение. Парсер от WP Shop — удобный инструмент для «манимейкеров». Команда WP Shop поддержит всех, но в приоритете те пользователи, которые пользуются платными продуктами или услугами, либо .
    2. Пример парсинга массива на 14000 товаров, на «мощном» севрере. Тем кто хочет заниматься парсингом в «промышленных масштабах» — дополнтельные услуги: установка и конфигурация серверов и персональные доработки парсера.

    Пришел день, и конфигурационные файлы для нашего приложения стали настолько большими, что менеджеры намекнули что в JSON-конфигах получается подозрительно много фигурных и не фигурных скобочек, и им хотелось бы от них избавиться. Был дан тонкий намек, что неплохо бы приглядеться к YAML, ведь ходят слухи что он очень человекочитаемый. И скобочек никаких там нет. И списки красивые. Не внять старшим мы естественно не могли, вынуждены были изучать вопрос, искать разницу, плюсы и минусы обоих форматов. Очевидно, что такие сравнения затеваются лишь для того, чтобы подтвердить мнение руководителей или даже если не подтвердить, то они найдут почему они правы и почему стоит делать изменения:)

    Уверен, что многие с данными форматами знакомы, но все же приведу краткое описание с википедии:

    JSON (англ. JavaScript Object Notation) - текстовый формат обмена данными, основанный на JavaScript и обычно используемый именно с этим языком. Как и многие другие текстовые форматы, JSON легко читается людьми. Несмотря на происхождение от JavaScript (точнее, от подмножества языка стандарта ECMA-262 1999 года), формат считается языконезависимым и может использоваться практически с любым языком программирования. Для многих языков существует готовый код для создания и обработки данных в формате JSON.

    YAML - человекочитаемый формат сериализации данных, концептуально близкий к языкам разметки, но ориентированный на удобство ввода-вывода типичных структур данных многих языков программирования. Название YAML представляет собой рекурсивный акроним YAML Ain"t Markup Language («YAML - не язык разметки»). В названии отражена история развития: на ранних этапах язык назывался Yet Another Markup Language («Ещё один язык разметки») и даже рассматривался как конкурент XML, но позже был переименован с целью акцентировать внимание на данных, а не на разметке документов.

    И так, что нам нужно:

    • сделать одинаковый сложный JSON и YAML
    • определить параметры по каким будем сравнивать
    • десериализовать в Java объекты около 30 раз
    • сравнить результат по скорости
    • сравнить читаемость файлов
    • сравнить удобство работы с форматом

    Очевидно, что писать собственные парсеры мы не будем, поэтому для начала выберем для каждого формата по уже существующему парсеру.
    Для json будем использовать gson (от google), а для yaml - snakeyaml (от не-знаю-кого).

    Как видим все просто, нужно только создать достаточно сложную модель, которая будет имитировать сложность конфиг-файлов, и написать модуль который будет тестировать yaml и json парсеры. Приступим.
    Нужна модель примерно такой сложности: 20 атрибутов разных типов + 5 коллекций по 5-10 элементов + 5 вложенных объектов по 5-10 элементов и 5 коллекций.
    Этот этап всего сравнения смело можно назвать самым нудным и неинтересным. Были созданы классы, с незвучными именами типа Model, Emdedded1, и т.д. Но мы не гонимся за читаемостью кода (как минимум в этой части), поэтому так и оставим.

    file.json

    "embedded2": { "strel1": "el1", "strel2": "el2", "strel4": "el4", "strel5": "el5", "strel6": "el6", "strel7": "el7", "intel1": 1, "intel2": 2, "intel3": 3, "list1": [ 1, 2, 3, 4, 5 ], "list2": [ 1, 2, 3, 4, 5, 6, 7 ], "list3": [ "1", "2", "3", "4" ], "list4": [ "1", "2", "3", "4", "5", "6" ], "map1": { "3": 3, "2": 2, "1": 1 }, "map2": { "1": "1", "2": "2", "3": "3" } }


    file.yml

    embedded2: intel1: 1 intel2: 2 intel3: 3 list1: - 1 - 2 - 3 - 4 - 5 list2: - 1 - 2 - 3 - 4 - 5 - 6 - 7 list3: - "1" - "2" - "3" - "4" list4: - "1" - "2" - "3" - "4" - "5" - "6" map1: "3": 3 "2": 2 "1": 1 map2: 1: "1" 2: "2" 3: "3" strel1: el1 strel2: el2 strel4: el4 strel5: el5 strel6: el6 strel7: el7


    Соглашусь, что человекочитаемость параметр достаточно субъективный. Но все таки, на мой взгяд, yaml немного более приятен взгляду и более интуитивно понятен.

    yaml parser

    public class BookYAMLParser implements Parser { String filename; public BookYAMLParser(String filename) { this.filename = filename; } @Override public void serialize(Book book) { try { DumperOptions options = new DumperOptions(); options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); Yaml yaml = new Yaml(options); FileWriter writer = new FileWriter(filename); yaml.dump(book, writer); writer.close(); } catch (IOException e) { e.printStackTrace(); } } @Override public Book deserialize() { try { InputStream input = new FileInputStream(new File(filename)); Yaml yaml = new Yaml(); Book data = (Book) yaml.load(input); input.close(); return data; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (YamlException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { String message = "Exception in file " + filename + ", "; throw new Exception(message + e.getMessage()); } return null; } }

    json parser

    public class BookJSONParser implements Parser { String filename; public BookJSONParser(String filename) { this.filename = filename; } @Override public void serialize(Book book) { Gson gson = new GsonBuilder().setPrettyPrinting().create();; try { FileWriter writer = new FileWriter(filename); String json = gson.toJson(book); writer.write(json); writer.close(); } catch (IOException e) { e.printStackTrace(); } } @Override public Book deserialize() { Gson gson = new Gson(); try { BufferedReader br = new BufferedReader(new FileReader(filename)); JsonReader jsonReader = new JsonReader(br); Book book = gson.fromJson(jsonReader, Book.class); return book; } catch (IOException e) { e.printStackTrace(); } return null; } }

    Как мы видим, оба формата имеют поддержку в java. Но для json выбор намного шире, это бесспорно.
    Парсеры гоотовы, теперь рассмотрим реализацию сравнения. Тут тоже все предельно просто и очевидно. Есть простой метод, который 30 раз десериализует объекты из файла. Если кому интересно - код под спойлером.

    testing code

    public static void main(String args) { String jsonFilename = "file.json"; String yamlFilename = "file.yml"; BookJSONParser jsonParser = new BookJSONParser(jsonFilename); jsonParser.serialize(new Book(new Author("name", "123-123-123"), 123, "dfsas")); BookYAMLParser yamlParser = new BookYAMLParser(yamlFilename); yamlParser.serialize(new Book(new Author("name", "123-123-123"), 123, "dfsas")); //json deserialization StopWatch stopWatch = new StopWatch(); stopWatch.start(); for (int i = 0; i < LOOPS; i++) { Book e = jsonParser.deserialize(); } stopWatch.stop(); System.out.println("json worked: " + stopWatch.getTime()); stopWatch.reset(); //yaml deserialization stopWatch.start(); for (int i = 0; i < LOOPS; i++) { Book e; e = yamlParser.deserialize(); } stopWatch.stop(); System.out.println("yaml worked: " + stopWatch.getTime()); }

    В реультате получаем следующий результат:
    json worked: 278 yaml worked: 669

    Как видно, json файлы парсятся примерно в три раза быстрее. Но абсолютная разница не является критичной, в наших масштабах. Поэтому это не сильный плюс в пользу json.
    Это происходит потому что json парсится «на лету», то есть считывается посимвольно и сразу сохраняется в объект. Получается объект формируется за один проход по файлу. На самом деле я не знаю как работает именно этот парсер, но в общем схема такая.
    А yaml, в свою очередь, более размеренный. Этап обработки данных делится на 3 этапа. Сначала строится дерево объектов. Потом оно еще каким-то образом преобразовывается. И только после этого этапа конвертируется в нужные структуры данных.

    Небольшая сравнительная таблица ("+" - преимущество, "-" - отставание, "+-" - нет явного преимущества):

    Как это можно подытожить?
    Тут все очевидно, если вам важна скорость - тогда json, если человекочитаемость - yaml. Нужно просто решить, что важнее. Для нас оказалось - второе.
    На самом деле, тут можно привести еще множество различных доводов в пользу каждого из форматов, но я считаю, что самые важные все таки эти два пункта.

    Далее, при работе с yaml мне пришлось столкнусть с не очень красивой обработкой исключений, особенно при синтаксических ошибках. Также, пришлось протестировать различные yaml библиотеки. Еще, в завершение нужно было написать какую-нибудь валидацию. Были опробованы валидацию при помощи схем (там приходилось вызывать руби гемы), и bean-валидация на основе jsr-303. Если вас интересует какая-либо из этих тем - буду рад ответить на вопросы.
    Спасибо за внимание:)

    P.S.
    Уже под конец написания статьи наткнулся на следующее сравнение yaml и json.

    (PECL yaml >= 0.4.0)

    yaml_parse — Разбирает поток YAML

    Описание

    yaml_parse (string $input [, int $pos = 0 [, int &$ndocs [, array $callbacks = NULL ]]]) : mixed

    Конвертирует весь поток YAML или его часть и записывает в переменную.

    Список параметров

    Строка для парсинга как поток YAML.

    Документ для разбора (-1 для всех документов, 0 для первого документа, ...).

    Если ndocs найден, тогда он будет заменен на количество документов в потоке YAML.

    Возвращаемые значения

    Возвращает значение, закодированое в input , в соответствующем типе PHP или FALSE в случае возникновения ошибки. Если параметр pos равен -1 , будет возвращен массив, содержащий по одной записи для каждого документа, найденого в потоке.

    Примеры

    Пример #1 Пример использования yaml_parse()

    $yaml = <<---
    invoice: 34843
    date: "2001-01-23"
    bill-to: &id001
    given: Chris
    family: Dumars
    address:
    lines: |-
    458 Walkman Dr.
    Suite #292
    city: Royal Oak
    state: MI
    postal: 48046
    site: zxibit.esy.es
    ship-to: *id001
    product:
    - sku: BL394D
    quantity: 4
    description: Basketball
    price: 450
    - sku: BL4438H
    quantity: 1
    description: Super Hoop
    price: 2392
    tax: 251.420000
    total: 4443.520000
    comments: Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.
    ...
    EOD;

    $parsed = yaml_parse ($yaml );
    var_dump ($parsed );
    ?>

    Результатом выполнения данного примера будет что-то подобное:

    array(8) { ["invoice"]=> int(34843) ["date"]=> string(10) "2001-01-23" ["bill-to"]=> &array(3) { ["given"]=> string(5) "Chris" ["family"]=> string(6) "Dumars" ["address"]=> array(4) { ["lines"]=> string(34) "458 Walkman Dr. Suite #292" ["city"]=> string(9) "Royal Oak" ["state"]=> string(2) "MI" ["postal"]=> int(48046) } } ["ship-to"]=> &array(3) { ["given"]=> string(5) "Chris" ["family"]=> string(6) "Dumars" ["address"]=> array(4) { ["lines"]=> string(34) "458 Walkman Dr. Suite #292" ["city"]=> string(9) "Royal Oak" ["state"]=> string(2) "MI" ["postal"]=> int(48046) } } ["product"]=> array(2) { => array(4) { ["sku"]=> string(6) "BL394D" ["quantity"]=> int(4) ["description"]=> string(10) "Basketball" ["price"]=> int(450) } => array(4) { ["sku"]=> string(7) "BL4438H" ["quantity"]=> int(1) ["description"]=> string(10) "Super Hoop" ["price"]=> int(2392) } } ["tax"]=> float(251.42) ["total"]=> float(4443.52) ["comments"]=> string(68) "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338." }

    1. В списке товаров нажмите "Выгрузить"

    После загрузки товаров на парсер, находясь на странице со списком товаров, нажмите кнопку "Выгрузить".

    2. Задайте настройки формата

    В появившемся окне выберите формат "Яндекс.Маркет (YML)" и задайте настройки формата: как выгружать характеристики и разделять свойства.

    Подробное описание каждой настройки вы можете найти ниже на этой странице.

    3. Выгрузка запущена

    Появится индикатор выгрузки товаров. Если не хотите ждать, вы можете выключить компьютер или закрыть браузер — выгрузка продолжится независимо от вас.

    Что такое YML?

    YML (Yandex Market Language) - это стандарт, разработанный Яндексом для принятия и размещения информации в базе данных Яндекс.Маркета. YML основан на стандарте XML.

    Настройки формата:

    Формировать offer id из — позволяет выбрать способ формирования атрибута id у тега offer, определяющего ID товарного предложения.

    Разделять мультисвойства — позволяет выбрать способ разделения выбираемых свойств (Размеры, Цвета и т.п.): либо на основе повторяющегося тега param, либо на основе разбиения предложения на отдельные товары на group_id, согласно спецификации YML.

    Товары не в наличии — можно задать как будут отображаться товары "Не в наличии" в маркете: Под заказ, т.е. с возможностью заказать или полностью не в наличии.

    Общие настройки:

    Выгружать товары — позволяет выбрать какие товары выгружать по признаку "Наличие" на сайте поставщика.

    Порядок выгрузки товаров — позволяет выбрать порядок выгрузки товаров и установить выгрузку задом наперед при желании.

    Разрешить HTML разметку в полях товара — разрешает или запрещает HTML-разметку в полях товара. Очень редко используется интернет-магазинами.

    Выгрузка изображений — позволяет изменить число или способ выгрузки изображений.

    Выгрузка характеристик — позволяет выгрузить свойства товаров (цвета, размеры и пр.) отдельными полями в файле или просто добавить к общему описанию товара. При добавлении к описанию сами колонки остаются. Выбирается в зависимости от возможностей вашего интернет-магазина или сайта СП.

    Разбить на несколько файлов — позволяет разбить выгрузку на несколько файлов: по категориям или по брендам.

    Нашли ошибку в выгрузке в этот формат?

    Если вы обнаружили ошибку в формате выгрузки Яндекс.Маркет (YML), пожалуйста, сообщите нам на или в чат на сайте. Мы постараемся исправить выгрузку как можно скорее.

    Интернет