Quad.Wiki
Quad.Magic: Конвертировать из XML в CSV/XLSX
Если у вас файл XML “плоской” структуры, т.е. в нем есть только уровень товаров и их перечисление, то открывать его лучше с помощью Excel по этой инструкции Импорт XML через Excel
Если у вас файл в формате YML (яндекс.маркет), пусть даже расширение у него и XML, то загружать его нужно так Импорт YML
Если файл большой и не открывается через Excel, либо сложной древовидной структуры, то для его загрузки вы можете преобразовать его в CSV или Excel с помощью действия Quad.Magic “Конвертировать XML в CSV/XLSX”.
В Настройка 1 указывается путь к файлу XML, который нужно конвертировать.
В Настройка 2 указывается путь к файлу CSV, в который сохраняется результат конвертации. Файл нужно указывать именно с расширением CSV. Файл CSV сохраняется всегда в кодировке UTF-8, разделитель полей “точка с запятой”.
Если вы конвертируете в XLSX, то программа сама заменит расширение файла.
В Настройка 3 указываются настройки конвертации.
Первая строка - параметры конвертации, перечисляются просто в строке, если нужно. Могут быть следующие параметры:
xlsx - конвертируется сразу в формат XLSX
utf8 - указать, если исходный файл XML в кодировке UTF-8
ansi - указать, если исходный файл XML в кодировке ANSI (обычной Windows)
Вторая строка - указывается тег, с которого в XML начинается блок, содержащий 1 товар.
Третья строка - указывается тег, которым в XML заканчивается блок, содержащий 1 товар.
Примеры тегов для второй и третьей строки:
Программа берет текст, соответствующий одному товару, а потом внутри него ищет значения полей, указанных в настройках.
Начиная с четвертой строки указываются настройки полей, которые будут перенесены из XML в CSV.
Каждое поле с новой строки. Параметры поля разделены символом вертикальной черты, может быть 7 параметров.
Остатки|Склад ИдСклада="|"|0|Склады|КоличествоНаСкладе="|"
Параметр 1 (в примере выше Остатки) - название колонки в файле CSV, в которую будет помещено значение этого поля.
Параметр 2 (в примере выше Склад ИдСклада=") - текст из файла XML, ПОСЛЕ которого нужно взять значение поля
Параметр 3 (в примере выше ") - текст из файла XML, ДО которого берется значение поля.
Т.е. для значения поля вырезается значение, которое находится между текстом из Параметров 2 и 3.
Если необходимо ввести в параметры 2,3,6 или 7 текст, который начинается или заканчивается пробелом, то вместо этого пробела нужно указать [spc], например
Остатки|Склад ИдСклада=[spc]|[spc]
Если введены теги в параметр 2 и 3, которым соответствует несколько значений в блоке с товаром, то будут сохранены эти несколько значений с разделителем | (вертикальная черта)
Если в примере выше указать параметр 2 <picture> , а параметр 3 </picture>, в файл CSV попадет текст, содержащий 6 ссылок на картинки, разделенные знаком |.
/10/img_rd10176_0.jpg|/10/img_rd10176_1.jpg|/10/img_rd10176_2.jpg|/10/img_rd10176_3.jpg|/10/img_rd10176_4.jpg|/10/img_rd10176_5.jpg
Для загрузки достаточно указать первые 3 параметра.
Параметр 4 (в примере выше 0) - здесь можно указать, какой по порядку текст нужно сохранить в поле в случае, когда по введенным в п. 2 и 3 тегам находится несколько значений. Если указать 2, то в примере выше загрузилась бы только одна ссылка, вторая по счету /10/img_rd10176_1.jpg
Если нужно указать еще параметры 5 или 6 и 7, при этом нужно загружать все значение, то в Параметр 4 указывается 0.
Параметр 5 (в примере выше Склады) - здесь указывается текст, к которому нужно перейти в блоке товаров, перед тем как искать теги для получения значений параметров. Использовать нужно в случаях, когда в файле XML для товара может быть несколько вложенных тегов с одинаковым названием, но относящихся к разным вышестоящим тегам. Например:
Чтобы получить значение второй цены, нужно сначала перейти к тексту “Цена 2”, а уже после этого брать значение между текстом <ЦенаЗаЕдиницу> и </ЦенаЗаЕдиницу>
Параметры 6 и 7 - используется в случае, если нужно сохранять “множественные” данные. Например такой файл:
В нем содержится информация по складам, при этом для каждого склада указан его Код и Остаток и нам необходимо сохранить и код и остаток. В этом случае в параметрах 2 и 3 вводится текст, между которым находится значение ИД склада, а в параметры 6 и 7 текст, между которым находится значение остатка склада. Для примера выше:
Остатки|Склад ИдСклада="|"|0|Склады|КоличествоНаСкладе="|"
Результат в ячейку сохраняется в формате JSON. Это массив значений, в котором текст между тегами 2 и 3 записывается в ключ “key”, в текст между тегами 6 и 7 записывается в ключ “value”
Таким способом для одного объекта можно сохранить только 2 вида информации, key (между 2 и 3) и value (между 6 и 7). Т.е. 3 и больше значений из 1 строки сохранить не получится.
Текст целиком сохраняется в одно поле. Дальше вы его можете выгрузить через экспорт из программы, либо можно использовать в программе в запросах SQL.
Пример 1
Настройки для загрузки цен и остатков из файла формата Commerce ML (offers.xml)
utf8 xlsx
<Предложение>
</Предложение>
Код|<Ид>|</Ид>
Наименование|<Наименование>|</Наименование>
Цена|<ЦенаЗаЕдиницу>|</ЦенаЗаЕдиницу>|0|Цена 2
Валюта|<Валюта>|</Валюта>
Количество|<Количество>|</Количество>
Остатки|Склад ИдСклада="|"|0|Склады|КоличествоНаСкладе="|"
Результат: