Подключение XML-файлов к шаблону вывода (для дозаписи, макросы: [LOADXML], [XMLADD])




Данная группа макросов шаблона вывода позволяет подключить один или более XML-файлов с жесткого диска для дозаписи в них любых текстовых данных. Дозапись может производиться: в «шапку» XML, в «тело» XML и в «подвал» XML.

ВНИМАНИЕ: Загрузка XML-файлов в память программы производится только 1 раз при запуске парсинга!

ВНИМАНИЕ: Сохранение изменений в подключенных XML-файлах производится при завершении процедуры парсинга контента!


Подключение XML-файлов производится макросом [LOADXML]

Так как XML можно образно разделить на «шапку», «тело» и «подвал», для более удобного обращения к разным частям XML можно в соответствующих параметрах задать алгоритм разделения.

Для начала определимся, что есть «шапка», «тело» и «подвал» XML. Более удобным способом будет разделить XML Так

Content Downloader

Подобное разделение достигается с помощью указания [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 на секции пользуйтесь логом выполнения функций и макросов в нижней части окна предпросмотра результатов парсинга контента

Content Downloader


Если вам нужно загрузить 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 воспользуйтесь логом


Content Downloader


Content Downloader


Смотрите также:

— Создание структуры рубрик XML (с Id и parentId)


1 Star2 Stars3 Stars4 Stars5 Stars (оценок: 1, средний балл: 5,00)

Загрузка...
Автор: admin, 31 августа 2017
Рубрики: Парсинг
Метки: ,

Последние статьи

css.php