Компонент Парсер — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
(Язык OQuery для HTML)
(Язык OQuery для HTML)
Строка 18: Строка 18:
 
=== Язык OQuery для HTML ===  
 
=== Язык OQuery для HTML ===  
  
Алгоритм OQuery применяется для разбора гипертекста или XML-структуры.
+
Алгоритм OQuery применяется для разбора гипертекста или XML-структуры. Рассмотрим следующую XML-структуру:
  
Помимо разбора Web-страниц, в Oktell часто встречается задача обработки контента. Контентом называется идентификационная информация по линии, абоненту, времени, а также перечень всех коммутаций с указанием имени сценария, :идентификатора и имени оператора, времени начала, времени конца, продолжительности и пр. Контент хранится в виде XML-структуры и доступен в служебном сценарии обработки контента в качестве параметра запуска.
+
  <?xml version="1.0" encoding="utf-16"?>
 
+
  <info>
vvv
+
<list index="1" name="matrix33">  
 
+
<row id="1" name="aaa">
 
+
<col id="1" name="r1c1" />
 
+
<col id="2" name="r1c2" />
Разберем использование алгоритма OQuery с помощью контента. Структура выглядит следующим образом:
+
<col id="3" name="r1c3" />
 
+
</row>
  <?xml version="1.0" encoding="utf-16"?>
+
<row id="2" name="bbb">
  <content Version="80903">
+
<col id="1" name="r2c1" />
  <call commcount="4" taskcount="0">
+
<col id="2" name="r2c2" />
    <property_simple key="datetimeformat" value="dd.MM.yyyy HH:mm:ss" />
+
<col id="3" name="r2c3" />
    <property_simple key="direction" value="1" name="cdIncoming" />
+
</row>
    <property_simple key="lineid" value="99c71464-08a9-4a68-8ad7-56ecce407a26" />
+
<row id="3" name="ccc">
    <property_simple key="linenumber" value="13001" />
+
<col id="1" name="r3c1" />
    <property_simple key="callerid" value="84951234568" />
+
<col id="2" name="r3c2" />
    <property_simple key="calledid" value="84995258525" />
+
<col id="3" name="r3c3" />
    <property_simple key="idchain" value="cec7eb02-2684-423d-9e6c-e20ff1593548" />
+
</row>
    <property_cdata key="custominfo"><![CDATA[]]></property_cdata>
+
</list>
    <property_simple key="timestart" value="21.01.2014 11:31:58" />
+
<list index="2" name="matrix22">
    <property_simple key="timestop" value="21.01.2014 11:33:36" />
+
<row id="1" name="ddd">
    <property_simple key="totalsec" value="97" />
+
<col id="1" name="element11" />
    <property_simple key="emergency" value="0" />
+
<col id="2" name="element12" />
    <property_simple key="callresult" value="busy" />
+
</row>
    <activity>
+
<row id="2" name="eee">
      <commutation index="0">
+
<col id="1" name="element21" />
        <property_simple key="idconnection" value="13e4b7cb-81c2-4b1a-8578-7be0ce5cf158" />
+
<col id="2" name="element22" />
        <property_simple key="type" value="2" name="IVR" />
+
</row>
        <property_simple key="custominfo" value="" />
+
</list>
        <property_simple key="timestart" value="21.01.2014 11:31:58" />
+
  </info>
        <property_simple key="timestop" value="21.01.2014 11:32:00" />
+
        <property_simple key="totalsec" value="1" />
+
        <property_simple key="ivrscriptname" value="Маршр вход 1" />
+
      </commutation>
+
      <commutation index="1">
+
        <property_simple key="idconnection" value="b37040d4-1a78-402f-88ee-2b680f778e6e" />
+
        <property_simple key="type" value="1" name="Abonent" />
+
        <property_simple key="custominfo" value="" />
+
        <property_simple key="timestart" value="21.01.2014 11:32:00" />
+
        <property_simple key="timestop" value="21.01.2014 11:32:24" />
+
        <property_simple key="totalsec" value="23" />
+
        <abonents count="1">
+
          <abonent index="1">
+
            <property_simple key="lineid" value="1822df2e-0002-42ba-ae51-d12009611a13" />
+
            <property_simple key="linenumber" value="16e001" />
+
            <property_simple key="callerid" value="" />
+
            <property_simple key="userid" value="6156bdd9-40cf-4aa2-9b90-aa4e9b7a3a23" />
+
            <property_simple key="username" value="admin" />
+
          </abonent>
+
        </abonents>
+
      </commutation>
+
      <commutation index="2">
+
        <property_simple key="idconnection" value="e6c8c115-dd4c-484d-8f5f-3ebeb67906dd" />
+
        <property_simple key="type" value="1" name="Abonent" />
+
        <property_simple key="custominfo" value="" />
+
        <property_simple key="timestart" value="21.01.2014 11:32:29" />
+
        <property_simple key="timestop" value="21.01.2014 11:33:34" />
+
        <property_simple key="totalsec" value="65" />
+
        <abonents count="1">
+
          <abonent index="1">
+
            <property_simple key="lineid" value="18bcab7a-786e-419b-9d51-9293a3969a0b" />
+
            <property_simple key="linenumber" value="17001" />
+
            <property_simple key="callerid" value="" />
+
            <property_simple key="userid" value="db81f69f-7a2b-4b50-bdb8-480d9f2d4045" />
+
            <property_simple key="username" value="Станислав" />
+
          </abonent>
+
        </abonents>
+
      </commutation>
+
    </activity>
+
  </call>
+
  </content>
+
  
 
=== Регулярные выражения ===  
 
=== Регулярные выражения ===  

Версия 07:48, 21 января 2014

Наверх

Компонент "Парсер" предназначен для разбора текстовых структур.

  • Для разбора обычного текста применяются регулярные выражения
  • Для разбора гипертекста или XML-структуры применяется парсер OQuery
  • Для разбора JSON-структура применяется парсер JSON

Входным аргументом для парсера является Документ (структура, подлежащая разбору). Документ может быть задан текстом, через переменную или выражение, с помощью функции. Далее, в зависимости от документа, задается алгоритм поиска и поисковый запрос. При необходимости задаются дополнительные параметры: Функция и Номер элемента. Результат разбора документа ("парсинга") сохраняется в переменную (поле "Результат в переменную").

Если с помощью одного парсера невозможно определить искомое выражение, необходимо использовать последовательность из таких компонентов. Каждый следующий парсер получает на вход результат от предыдущего компонента. Таким образом, возможен сколь угодно глубокий поиск нужной информации.

В этой статье подробно рассматривается применение каждого алгоритма и примеры использования парсера.


Язык OQuery для HTML

Алгоритм OQuery применяется для разбора гипертекста или XML-структуры. Рассмотрим следующую XML-структуру:

<?xml version="1.0" encoding="utf-16"?>
<info>
	<list index="1" name="matrix33"> 
		<row id="1" name="aaa">
			<col id="1" name="r1c1" />
			<col id="2" name="r1c2" />
			<col id="3" name="r1c3" />
		</row>
		<row id="2" name="bbb">
			<col id="1" name="r2c1" />
			<col id="2" name="r2c2" />
			<col id="3" name="r2c3" />
	</row>
		<row id="3" name="ccc">
			<col id="1" name="r3c1" />
			<col id="2" name="r3c2" />
			<col id="3" name="r3c3" />
		</row>
	</list>
	<list index="2" name="matrix22">
		<row id="1" name="ddd">
			<col id="1" name="element11" />
			<col id="2" name="element12" />
		</row>
		<row id="2" name="eee">
			<col id="1" name="element21" />
			<col id="2" name="element22" />
		</row>
	</list>
</info>

Регулярные выражения

Парсер JSON