Quad.Wiki

Quad.Magic: Конвертировать из XML в CSV/XLSX

Если у вас файл XML “плоской” структуры, т.е. в нем есть только уровень товаров и их перечисление, то открывать его лучше с помощью Excel по этой инструкции

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

Если файл большой и не открывается через 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|Склады|КоличествоНаСкладе="|"

 

Результат: