RXParser 1.7125 - универсальный преобразователь текстовых документов
Сборка выходного файла происходит по правилам, которые объявляются в файлах правил сборки.
rxml - рекомендуемое расширение для таких файлов.
Для задания мест вставки данных из разобранного документа используются теги с именем rxml.
Такие теги имеют краткий вид:
или полный вид:
Описание пространства имён совпадает с описанием из правил разбора документа.
Список атрибутов состоит из отдельных атрибутов: пар "ключ"=>"значение"
Значения атрибутов могут заключаться в двойные """ или одинарные "'" кавычки, иначе, невозможно использование в атрибутах символов "'" и """, а так же "пробел".
Имя атрибута | Значение атрибута |
---|---|
VALUE | - <имя переменной> из заданного <пространства имён>. |
INDEX | - указывается порядковый номер элемента из массива данных <переменной> из заданного <пространства имён>. Если определён этот атрибут, данные, представляемые данным тегом, автоматически становится статическим. |
TYPE | - указывается <тип обработчика> данных. При выводе, данные могут обрабатываться дополнительно, помимо их преобразования при разборке документа.
Дополнительное описание в таблице «Предопределённые типы обработчиков» |
Примеры я буду приводить основываясь на данных:
"Новость" : pulp-fiction ( ссылка : LINK , заголовок : TEXT ). <img src="bulletlong\.gif" width="4" height="16" border="0"[^>]*> <a class="ea" href="([^"]+)"> (.+?) </a> <br> .
задаю правило сборки:
Таким образом, удастся отформатировать только заголовок одной из найденных новостей (по порядку "index"), а хотелось бы вывести все. Для решения этой проблемы применяются итераторы.
Итераторы применяются для вывода многомерных массивов данных.
Простой тег rxml считается предствляющим статические данные, если для него определён атрибут "index". Другими словами, данные, представляемые таким тегом не зависят от итератора.
Итераторы выполняются только для заданного пространства имён.
Во избежание непредвиденных ситуаций, внутри итератора маркируйте теги с отличным пространством имён как статические.
Тело итератора может состоять из таких частей:
Использование итератора для форматирования одномерного массива данных:
Допустим, новости разбиты по рубрикам, тогда сначала необходимо дополнительно определить правило разбора рубрик:
"Рубрика" : news-block ( заголовок : TEXT ). <b>([^<>]*)</b><br> <img src="bulletlong\.gif"[^>]*> <a class="ea" .
Использование итераторов для форматирования многомерного массива данных:
Живые примеры составления файлов правил разбора и правил сборки вы можете найти в папке ./config/
[ Главная страница ] [ Правила разбора ] [ Правила сборки ]
RXParser. Автор Шатров А. С. <cdch@yandex.ru>
Краснодар, 13.03.2005