Парсер
Осуществляет разбор различных структур данных для выделения необходимого результата. Может работать с
-
JSON-структурами
-
XML-структурами
-
HTML- структурами
-
текстовыми документами
На уровне сценария могут быть организованы циклы и условия. Наиболее частое использование для разбора ответов от компонентов Web-запрос, Монитор и Операция.
Название | Описание |
---|---|
Документ |
Аргумент, содержащий структуру, подлежащую разбору. |
Алгоритм |
|
Поисковый запрос |
Строка с поисковым запросом для выбранного алгоритма. Подробно описано в Правила поиска различных алгоритмов Парсера |
Функция |
В зависимости от алгоритма используются различные функции. Подробнее в Функции различных алгоритмов Парсера |
Номер элемента |
(только для алгоритма Регулярные выражения) Указывает индекс элемента в списке элементов, обнаруженных по шаблону в исходном документе. Нумерация начинается с 0. |
Номер группы |
(только для алгоритма Регулярные выражения) Указывает номер группы в списке захваченных групп выбранного элемента. Имеет значение только при указании в поисковом запросе групп захвата (выделяются круглыми скобками в соответствии с синтаксисом регулярных выражений). |
Номер атрибута |
(только для алгоритмов xml и html) Указывает номер атрибута |
Имя атрибута |
(только для алгоритмов xml и html) Указывает имя атрибута |
Результат в переменную |
Переменная, в которую будет сохранен результат применения поискового запроса к документу. |
Ошибка в переменную |
Переменная, в которую сохраняется текст ошибки. |
Переход |
Компонент, на который передается управление. Переход по умолчанию |
Переход, ошибка |
Компонент, на который передается управление в случае ошибки |
Описание |
Описание компонента |
Функции различных алгоритмов Парсера
Функция для алгоритма Парсер JSON.
Вариант | Описание |
---|---|
Содержимое |
Возвращает обнаруженный элемент вместе с содержимым. |
Восстановленное содержимое |
В ответе убраны внешние признаки JSON элемента |
Количество элементов |
Возвращает количество найденных элементов. |
Список ключей |
Возвращает список ключей в найденном объекте. |
Функция для алгоритма Парсер XML.
Вариант | Описание |
---|---|
Документ |
Возвращает выбранный элемент целиком вместе с содержимым. |
Содержимое |
Возвращает содержимое выбранного элемента, исключая сам элемент. |
Количество элементов |
Возвращает количество обнаруженных элементов. |
Значение атрибута |
Возвращает значение указанного атрибута выбранного элемента. |
Имя атрибута |
Возвращает имя атрибута по его индексу в выбранном элементе. |
Количество атрибутов |
Возвращает количество атрибутов в выбранном элементе. |
Функция для алгоритма Регулярные выражения.
Вариант | Описание |
---|---|
Содержимое |
Возвращает содержимое указанной группы из указанного элемента. Отсчет элементов с 1 (значение по умолчанию), отсчет групп с 0 (значение по умолчанию 1), причем нулевая группа – это полное содержание элемента. Применение в поисковом шаблоне группировок (круглые скобки) влечет необходимость указывать корректное значение интересующей группы, указание неподходящего индекса приводит к завершению работы компонента с ошибкой. |
Количество элементов |
Возвращает количество обнаруженных элементов, соответствующих поисковому шаблону. |
Количество групп |
Возвращает количество захваченных групп в обнаруженном элементе с указанным индексом. Необходимо указание номера элемента, по умолчанию 1. Если группировка в поисковом шаблоне не используется, то возвращается значение 0. |
Функция для алгоритма Парсер HTML.
Вариант | Описание |
---|---|
Документ |
Возвращает выбранный элемент целиком вместе с содержимым. |
Содержимое |
Возвращает содержимое выбранного элемента, исключая сам элемент. |
Количество элементов |
Возвращает количество обнаруженных элементов. |
Значение атрибута |
Возвращает значение указанного атрибута выбранного элемента. |
Имя атрибута |
Возвращает имя атрибута по его индексу в выбранном элементе. |
Количество атрибутов |
Возвращает количество атрибутов в выбранном элементе. |
Правила поиска различных алгоритмов Парсера
Алгоритм JSON
Запросом к парсеру JSON является строка, определяющая ключи свойств объектов или номера элементов в массиве, разделенных символом /.
При выполнении запроса слева направо парсер на каждом этапе углубляется внутрь структуры JSON.
Пример исходного json
{
"result": "ok",
"errormsg": "",
"chat": [
{
"sessId": "uvajoqnx0qcpbjoflxr",
"msgs": [
{
"msgId": 8255,
"msgDt": 1491292390,
"msgData": {
"type": "text",
"data": "Добрый день. Выберите интересующий Вас вопрос."
},
"msgSender": "op"
},
{
"msgId": 8256,
"msgDt": 1491292391,
"msgData": {
"type": "buttons",
"data": "Связаться с usr 6"
},
"msgSender": "ab"
},
{
"msgId": 8257,
"msgDt": 1491292392,
"msgData": {
"type": "buttons",
"data": "Связаться с usr 8"
},
"msgSender": "ab"
}
]
}
]
}
Запрос | Функция | Результат |
---|---|---|
|
Содержимое |
uvajoqnx0qcpbjoflxr |
Количество элементов |
1 |
|
|
Содержимое |
8257 |
Количество элементов |
1 |
|
|
Содержимое |
|
Количество элементов |
2 |
|
|
Список ключей |
["sessId","msgs"] |
Алгоритм XML
Пример документа XML:
<configuration version="16">
<folder id="x.demo.oktell.ru" label="x.demo.oktell.ru" path="c:\rtx_mg3\Media\domains\x.demo.oktell.ru.ru" type="readwrite" rescanIntervalS="10" ignorePerms="false" autoNormalize="true">
<device id="RXYYDPI-SVKNBMF-YADG7WD"></device>
<minDiskFreePct>1</minDiskFreePct>
<versioning></versioning>
<copiers>0</copiers>
<pullers>0</pullers>
<hashers>0</hashers>
<order>random</order>
</folder>
<folder id="demo.oktell.ru" label="demo.oktell.ru" path="c:\rtx_mg3\Media\domains\demo.oktell.ru" type="readwrite" rescanIntervalS="10" ignorePerms="false" autoNormalize="true">
<device id="RXYYDPI-SVKNBMF-01020304"></device>
<minDiskFreePct>1</minDiskFreePct>
<versioning></versioning>
<copiers>0</copiers>
<pullers>0</pullers>
<hashers>0</hashers>
<order>random</order>
</folder>
<gui enabled="true" tls="false" debugging="false">
<address>127.0.0.1:8384</address>
<apikey>jeopL9MghPvTmweKDeGcoXhwRtrdaVDP</apikey>
<theme></theme>
</gui>
</configuration>
Запрос | Функция | Результат |
---|---|---|
|
Документ |
|
|
Документ |
|
|
Документ |
|
Содержимое |
|
|
Значение атрибута. |
readwrite |
|
Имя атрибута. |
id |
|
Количество атрибутов |
7 |
Алгоритм HTML
Общие правила:
-
Поиск по наименованию тега в двойных кавычках, например,
"br"
-
Последовательность тегов формируется разделителем |, например,
"html"|"head"|"title"
-
Получения одного из одинаковых тегов производится добавлением индекса после разделителя тега (начиная с нуля), например,
"html"|"br"|1|"title"
-
По умолчанию переход к поиску следующего тега происходит с выбором нулевого тега.
-
Запрос
"html"|0|"head"|0|"title"|0
равносилен запросу"html"|"head"|"title"
, т.е запрос по имени тега всегда возвращает список. -
Запрос можно строить по индексам, например,
"0|0|1"
-
Для обращений к атрибутам тега используется скобки.
-
Запрос
"html"|"head"|("charset")
выдаст список родительских тегов "head" в которых присутствует атрибут "charset". -
Запрос
"html"|"head"|("type="test/css")
выдаст список родительских тегов "head" в которых атрибут"type"
равен"test/css"
.
Пример документа HTML:
<HTML>
<HEAD>
<META a="1" b="2"/>
</HEAD>
<BODY>
<p id="x1" class="abc">abc abc
<a href="http://asdf.ru">link</a> <br>
</p>
<br><br>
<p id="x2" class="abc" v="123">zxcv zxcv</p>
</BODY>
</HTML>
Запрос | Функция | Результат |
---|---|---|
|
Документ |
|
Содержимое |
|
|
Количество элементов |
1 |
|
Значение атрибута. |
x1 |
|
|
Количество атрибутов |
2 |
|
Документ |
|
|
Документ |
|
|
Документ |
|
|
Содержимое |
zxcv zxcv |