Компонент Парсер
Описание
Осуществляет разбор любых текстовых структур. Может использоваться метод регулярных выражений, метод поиска по JSON, встроенный анализатор гипертекста. Согласно строке поиска формирует ответ, либо вырезает запрошенный раздел или их совокупность, либо определяет количество элементов в указанном разделе структуры. Сложные структуры могут быть разобраны последовательностью элементов «Парсер», каждый из которых выделяет из документа некоторую структуру и возвращает ее для передачи на вход следующего элемента.
Разобранная структура документа кэшируется в конкретном экземпляре обработчика сценариев для ускорения работы с одним большим документом последовательных элементов «Парсер».
Индекс |
|
Краткое название |
|
Типы сценариев |
|
Стартовый модуль |
|
Режим |
Синхронный |
Иконка |
|
Характер разветвления |
Разветвляющий, замыкающий |
Свойства
Спецификация | Описание |
---|---|
Название: |
Аргумент с содержанием документа, подлежащего разбору. |
Название: |
Алгоритм разбора.
|
Название: |
Строка с поисковым запросом для выбранного алгоритма. |
Название: |
Функция для алгоритма
|
Название: |
Функция для алгоритма
|
Название: |
Функция для алгоритма
|
Название: |
Функция для алгоритма
|
Название: |
Параметр для алгоритма |
Название: |
Параметр для алгоритма Например, в документе |
Название: |
Параметр для алгоритмов |
Название: |
Параметр для алгоритмов |
Название: |
Переменная для сохранения результата операции. |
Название: |
Список последовательно выполняющихся дополнительных запросов и присвоений результатов в переменную. Если поле заполнено, то сначала выполняется основной запрос, а затем с теми же параметрами все дополнительные запросы.
|
Название: |
Переменная для сохранения ошибки. |
Название: |
Компонент, которому передается управление при успешном завершении операции. |
Название: |
Компонент, которому передается управление при ошибке. |
Примеры
Алгоритм JSON
Обзор
-
При парсинге массива объектов можно указывать фильтр в
(key:value)
, только объекты с наличием указанной пары ключ-значения будут использованы для дальнейшего парсинга. Фильтр может быть только по одной паре ключ-значение. Например:"msgs"("msgSender":"ab")
, "msgs" – содержит массив объектов из которых будут выбраны объекты с наличием свойства "msgSender"="ab". -
Нумерация элементов массива начинается с 0.
{
"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"
}
]
}
]
}
Поисковый запрос | Функция | Результат |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[ { "msgId": 8256, "msgDt": 1491292391, "msgData": { "type": "buttons", "data": "Связаться с usr 6" }, "msgSender": "ab" }, { "msgId": 8257, "msgDt": 1491292392, "msgData": { "type": "buttons", "data": "Связаться с usr 8" }, "msgSender": "ab" } ] . |
|
|
|
|
|
|
Алгоритм XML
<configuration version="16">
<folder id="x.okteller.ru" label="x.okteller.ru" path="c:\rtx_mg3\Media\domains\x.okteller.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="okteller.ru" label="okteller.ru" path="c:\rtx_mg3\Media\domains\okteller.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="Common" label="Common" path="c:\rtx_mg3\Media\common" 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>
<device id="RXYYDPI-SVKNBMF-YADG7WD" name="Pavel" compression="metadata" introducer="false">
<address>dynamic</address>
</device>
<gui enabled="true" tls="false" debugging="false">
<address>127.0.0.1:8384</address>
<apikey>jeopL9MghPvTmweKDeGcoXhwRtrdaVDP</apikey>
<theme></theme>
</gui>
<options>
<globalAnnounceEnabled>false</globalAnnounceEnabled>
<localAnnounceEnabled>false</localAnnounceEnabled>
<localAnnouncePort>21027</localAnnouncePort>
<localAnnounceMCAddr></localAnnounceMCAddr>
<maxSendKbps>0</maxSendKbps>
<maxRecvKbps>0</maxRecvKbps>
<reconnectionIntervalS>60</reconnectionIntervalS>
<relaysEnabled>false</relaysEnabled>
<relayReconnectIntervalM>10</relayReconnectIntervalM>
<startBrowser>false</startBrowser>
<natEnabled>false</natEnabled>
<natLeaseMinutes>60</natLeaseMinutes>
<natRenewalMinutes>30</natRenewalMinutes>
<natTimeoutSeconds>10</natTimeoutSeconds>
</options>
</configuration>
Поисковый запрос | Функция | Результат |
---|---|---|
|
|
<folder id="Common" label="Common" path="c:\rtx_mg3\Media\common" type="readwrite" rescanIntervalS="10" ignorePerms="false" autoNormalize="true"> <device id="RXYYDPI-SVKNBMF-YADG7WD"/> <minDiskFreePct>1</minDiskFreePct> <versioning/> <copiers>0</copiers> <pullers>0</pullers> <hashers>0</hashers> <order>random</order> </folder> <folder id="rootdomain.ru" label="rootdomain.ru" path="c:\rtx_mg3\Media\domains\rootdomain.ru" type="readwrite" rescanIntervalS="10" ignorePerms="false" autoNormalize="true"> <device id="RXYYDPI-SVKNBMF-YADG7WD"/> <minDiskFreePct>1</minDiskFreePct> <versioning/> <copiers>0</copiers> <pullers>0</pullers> <hashers>0</hashers> <order>random</order> </folder> <folder id="x.rootdomain.ru" label="x.rootdomain.ru" path="c:\rtx_mg3\Media\domains\x.rootdomain.ru" type="readwrite" rescanIntervalS="10" ignorePerms="false" autoNormalize="true"> <device id="RXYYDPI-SVKNBMF-YADG7WD"/> <minDiskFreePct>1</minDiskFreePct> <versioning/> <copiers>0</copiers> <pullers>0</pullers> <hashers>0</hashers> <order>random</order> </folder> . |
|
|
<device id="RXYYDPI-SVKNBMF-YADG7WD"/> . |
|
|
<folder id="x.rootdomain.ru" label="x.rootdomain.ru" path="c:\rtx_mg3\Media\domains\x.rootdomain.ru" type="readwrite" rescanIntervalS="10" ignorePerms="false" autoNormalize="true"> <device id="RXYYDPI-SVKNBMF-YADG7WD"/> <minDiskFreePct>1</minDiskFreePct> <versioning/> <copiers>0</copiers> <pullers>0</pullers> <hashers>0</hashers> <order>random</order> </folder> . |
|
<device id="RXYYDPI-SVKNBMF-YADG7WD"/> <minDiskFreePct>1</minDiskFreePct> <versioning/> <copiers>0</copiers> <pullers>0</pullers> <hashers>0</hashers> <order>random</order> . |
|
|
|
|
|
|
|
|
|
Алгоритм 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>
<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>
Поисковый запрос | Функция | Результат |
---|---|---|
|
|
<p id="x1" class="abc">abc abc <a href="http://asdf.ru">link</a> <br></p> . |
|
abc abc <a href="http://asdf.ru">link</a> <br> . |
|
|
|
|
|
|
|
|
|
|
|
|
<p id="x1" class="abc">abc abc <a href="http://asdf.ru">link</a> <br></p> . |
|
|
<p id="x1" class="abc">abc abc <a href="http://asdf.ru">link</a> <br></p> . |
|
|
<p id="x2" class="abc" v="123">zxcv zxcv</p> . |
|
|
|
См. также
-
Роль svc