Данная группа макросов шаблона вывода позволяет подключить один или более XML-файлов с жесткого диска для дозаписи в них любых текстовых данных. Дозапись может производиться: в “шапку” XML, в “тело” XML и в “подвал” XML.
ВНИМАНИЕ: Загрузка XML-файлов в память программы производится только 1 раз при запуске парсинга!
ВНИМАНИЕ: Сохранение изменений в подключенных XML-файлах производится при завершении процедуры парсинга контента!
Подключение XML-файлов производится макросом [LOADXML]
Так как XML можно образно разделить на “шапку”, “тело” и “подвал”, для более удобного обращения к разным частям XML можно в соответствующих параметрах задать алгоритм разделения.
Для начала определимся, что есть “шапка”, “тело” и “подвал” XML. Более удобным способом будет разделить XML Так
Подобное разделение достигается с помощью указания [BODYCONTAINER]ИМЯ ТЕГА[/BODYCONTAINER]
1 2 3 4 | [LOADXML(ИМЯ)][BODYCONTAINER]offers[/BODYCONTAINER]ПУТЬ К XML-ФАЙЛУ НА ДИСКЕ[/LOADXML] ИМЯ - имя загруженного файла для обращения к нему из макросов работы с XML (указываем любое имя) offers (ИМЯ ТЕГА) - имя XML тега, который является родительским для всех товаров (содержит в себе все товары) |
Существует еще один вариант разделения (с помощью указания подстроки конца “Шапки” и конца “Тела” в коде XML
1 2 3 4 5 | [LOADXML(ИМЯ)][ENDOFHEAD]КОНЕЦ ШАПКИ[/ENDOFHEAD][ENDOFBODY]КОНЕЦ ТЕЛА[/ENDOFBODY]ПУТЬ К XML-ФАЙЛУ НА ДИСКЕ[/LOADXML] ИМЯ - имя загруженного файла для обращения к нему из макросов работы с XML (указываем любое имя) КОНЕЦ ШАПКИ - часть кода XML, которая расположена в конце шапки (чтобы макрос "понимал", где кончается шапка XML? Параметр [ENDOFHEAD] можно не использовать) КОНЕЦ ТЕЛА - часть кода XML, которая расположена в конце тела (чтобы макрос "понимал", где кончается тело XML?) |
Примечание: Если не указать параметры разделения XML, то весь код XML будет загружен в секцию “Тело”.
Для контроля разделения XML на секции пользуйтесь логом выполнения функций и макросов в нижней части окна предпросмотра результатов парсинга контента
Если вам нужно загрузить XML в UTF8-кодировке, добавьте перед именем файла параметр [UTF8]
1 | [LOADXML(1)][BODYCONTAINER]offers[/BODYCONTAINER][UTF8]C:\Content\XMLSample.txt[/LOADXML] |
В случаях, если подключаемого XML-файла может не быть на диске, можно указать шаблон, который будет использоваться при создании XML (шаблон указывается в операторе [XMLTEMPLATE])
1 | [LOADXML(1)][XMLTEMPLATE]ШАБЛОН XML[/XMLTEMPLATE][BODYCONTAINER]offers[/BODYCONTAINER][UTF8]C:\Content\XMLSample.txt[/LOADXML] |
Если нужно удалить старое содержимое XML при его подключении (то есть, удалять старое содержимое файла “при запуске парсинга”), добавьте параметр [RESET]
1 | [LOADXML(1)][XMLTEMPLATE]ШАБЛОН XML[/XMLTEMPLATE][BODYCONTAINER]offers[/BODYCONTAINER][UTF8][RESET]C:\Content\XMLSample.txt[/LOADXML] |
Также не забудьте указать [XMLTEMPLATE], так как все СТАРОЕ содержимое XML файла при использовании параметра [RESET] будет стерто.
Дозапись данных в подключенные XML-файлы производится макросом шаблона вывода [XMLADD]
1 2 3 4 5 6 7 8 9 10 | [XMLADD(ИМЯ|КУДА ДОЗАПИСЫВАТЬ)]ТЕКСТ ДЛЯ ДОЗАПИСИ[/XMLADD] ИМЯ - имя подключенного XML КУДА ДОЗАПИСЫВАТЬ - куда производить дозапись данных (0 - в шапку, 1 - в тело, 2 - в "подвал") ТЕКСТ ДЛЯ ДОЗАПИСИ - любой текст или код, который нужно дозаписать в конец нужной секции подключенного XML-файла [XMLADD(1|1)] Текст[/XMLADD] В итоге, в XML с именем 1 в тело (1) будет добавлен указанный текст (обратите внимание на перенос строки перед "Текст", чтобы данные в XML дозаписывались через символ переноса строки). |
Также можно производить дозапись данных не в конец секции, а в конец содержимого указанного тега с помощью оператора {ADDTOSEGMENT(ИМЯ ТЕГА)}
1 2 | [XMLADD(1|0)]{ADDTOSEGMENT(CATEGORIES)} ТЕКСТ ДЛЯ ДОБАВЛЕНИЯ[/XMLADD] |
Таким образом, данные (ТЕКСТ ДЛЯ ДОБАВЛЕНИЯ) добавятся в XML с именем 1 в секцию 0 (“Шапка”) в конец содержимого тега CATEGORIES
Для перезаписи содержимого указанного тега воспользуйтесь оператором {REPLACESEGMENT(ИМЯ ТЕГА)}
1 | [XMLADD(1|0)]{REPLACESEGMENT(CATEGORIES)}ТЕКСТ[/XMLADD] |
В этом случае, содержимое тега CATEGORIES будет перезаписано на ТЕКСТ.
Для перезаписи содержимого всей секции (“Шапки” XML, “Тела” XML или “Подвала” XML) воспользуйтесь оператором {REPLACEALL}
1 | [XMLADD(1|0)]{REPLACEALL}ТЕКСТ[/XMLADD] |
Для контроля данных сохраняемого XML воспользуйтесь логом
Смотрите также: