Фиды XML, RSS, YML и YAML
Индексация RSS/Atom, фидов Яндекс Маркета (YML) и Google Merchant, любого XML-каталога или YAML-списка записей.
Два типа коннекторов читают структурированные файлы по публичному URL:
| Тип | Что читает | Типичный источник |
|---|---|---|
xml | RSS 2.0 / RSS 1.0, Atom, Яндекс Маркет YML, Google Merchant, любой XML с путём к записям | блог, выгрузка для маркетплейса, XML из ERP |
yaml | YAML-список записей, словарь со списком под ключом, словарь записей | _data Jekyll, каталоги статических сайтов |
Сопоставление полей то же, что у json и csv (idField, titleField,
contentField, urlField, tagsField), режимы full / delta с пропуском
неизменённых документов по контрольной сумме, расписание, maxDocuments и
pruneDeleted.
XML: определение формата
Формат определяется по корневому элементу; dialect нужен, только чтобы его
переопределить.
| Корень | Диалект | Записи | Поля |
|---|---|---|---|
<rss> / <rdf:RDF> | rss | channel/item | id (guid или ссылка), title, content (content:encoded или description без HTML), url, published_at, author, category, теги из <category> |
<feed> | atom | entry | id, title, content / summary, url, published_at, updated_at, author, теги из category@term |
<yml_catalog> | yml | shop/offers/offer | атрибут id, title (name или typePrefix vendor model), content (описание + производитель + параметры), price, oldprice, currency, category (название по shop/categories), category_path, vendor, vendor_code, available, image, barcode, params, поле param_<имя> на каждый <param name> |
<rss> с тегами g: | google | channel/item | g:id, g:title, g:description, g:link, price и currency из g:price ("159.00 USD", "1.234,50 EUR"), sale_price, availability, available, brand, image, category (g:product_type), gtin, mpn |
| другое | generic | itemPath | дочерние элементы и атрибуты записи |
Поля диалекта добавляются в документ автоматически. Те, по которым нужны
фильтры и фасеты (price как float, category, vendor, brand, currency
как фасетные string), объявите в схеме индекса.
{
"type": "xml",
"config": { "url": "https://shop.example.ru/export/yml.xml", "maxDocuments": 5000 }
}Произвольный XML: "itemPath": "catalog.products.product", "idField": "sku",
"fields": ["price", "price.currency", "brand"].
YAML
Записи ищутся по порядку: itemPath; список верхнего уровня; единственный ключ
со списком записей; словарь записей (ключ становится id); несколько документов
---. fields копирует дополнительные значения; путь через точку читает
вложенные (dimensions.width → dimensions_width).
Безопасность и ограничения
- Только публичные
http(s)URL, проверяется каждый редирект. - Ответ больше 5 МБ отклоняется (
TOO_LARGE). - XML с объявлениями
<!ENTITY>отклоняется (INVALID_XML): сущности не раскрываются, внешние не загружаются. Обычный<!DOCTYPE yml_catalog SYSTEM "shops.dtd">допустим. - YAML: только базовая схема без пользовательских тегов, раскрытие алиасов
ограничено (
INVALID_YAML). - Повторяющаяся в фиде запись записывается один раз (побеждает последняя).