Array

Шаблон Array

Минимальный шаблон

<Array>
    <!-- Источник массива -->
    <Source></Source>
    <!-- Получение индекса первого элемента. -->
    <Filter>
        <Not>
            <And>
                <Or>
                    <Filter Type="Equal">
                        <!-- или Field (для DC) или Index (для массивов)-->
                        <Field></Field>
                        <Index></Index>
                        <DataType Type=""></DataType>
                        <Value></Value>
                    </Filter>
                </Or>
            </And>
        </Not>
    </Filter>
    <!-- Уникальные элементы в массиве. Если теги On не указаны, используется первый элемент -->
    <Distinct>
      <On Index="" />
    </Distinct>
    <!-- Сортировка. Если теги By не указаны, используется первый элемент и сортируется по возрастанию  -->
    <Order>
      <By Index="" Type="Asc" />
      <By Index="" Type="Desc" />
    </Order>
    <!-- Создать новый массив на основе существующего. Если Items.Count == 1 то возвращает одномерный массив -->
    <Select>
        <Items>
            <!-- Элемент массива -->
            <Item Type="Index"></Item>
            <!-- Выбор из словаря -->
            <Item Type="Field"><!-- название элемента словаря --></Item>
            <!-- Скалярное значение -->
            <Item Type="Value"></Item>
            <!-- Порядковый номер элемента массива -->
            <Item Type="Number" Start="0"></Item>
            <!-- Форматирование значений -->
            <Item Type="Format"></Item>
            <!-- Работа с вложенными массивами -->
            <Item Type="Action">
                <Index><!-- индекс элемента массива --></Index>
                <Actions><!-- цепочка действий. Доступны все действия над массивами--></Actions>
            </Item>
            <!-- Расчет выражения -->
            <Item Type="Expression">
                <!-- В выражении могут использоваться элементы массива ([0]) и дополнительные значения ({0}).-->
                <!-- Дополнительно можно добавить переменную Index -->
                <Expression>{0} > 0</Expression>
                <Items>
                    <!-- Дополнительные значения -->
                    <Item></Item>
                </Items>
            </Item>
            <!-- Подстановка значений -->
            <Item>
                <Index><!-- индекс элемента массива --></Index>
                <Value><!-- таблица значений --></Value>
            </Item>
        </Items>
    </Select>    
</Array>
Полный шаблон Array
<Array>
    <!-- Источник массива -->
    <Source></Source>
    <!-- Добавить в массив значение и вернуть новый массив -->
    <Add></Add>
    <!-- Возвращает элемент массива. Для одномерного массива возвращается скалярное значение. Для многомерного - одномерный массив значений -->
    <ElementAt>
        <Index><!-- value --></Index>
    </ElementAt>
    <!-- Удаление элементов из массива -->
    <Remove>
        <!-- Для удаления одного элемента -->
        <Index></Index>
        <!-- Для удаления нескольких элементов -->
        <Indices>
            <Index></Index>
        </Indices>
        <Structure Type="List">
            <Item></Item>
            <Item></Item>
            <Item></Item>
        </Structure>
    </Remove>
    <!-- Обновить элемент по индексу -->
    <Update>
        <Index></Index>
        <!-- Для одномерного массива -->
        <Value></Value>
        <!-- Для многомерных массивов -->
        <Value>
            <Row>
                <Item></Item>
            </Row>
        </Value>
    </Update>
    <!-- Создать новый массив на основе существующего. Операция Map. Если Items.Count == 1 то возвращает одномерный массив -->
    <Select>
        <Items>
            <Item Type="Expression">
                <!-- В выражении могут использоваться элементы массива ([0]) и дополнительные значения ({0}).-->
                <!-- Дополнительно можно добавить переменную Index -->
                <Expression>{0} > 0</Expression>
                <Items>
                    <Item></Item>
                <Items>
            </Item>
            <!-- Скалярное значение -->
            <Item Type="Value"></Item>
            <!-- Элемент массива -->
            <Item Type="Index"></Item>
            <!-- Порядковый номер элемента массива -->
            <Item Type="Number" Start="0"></Item>
            <!-- Форматирование значений -->
            <Item Type="Format"></Item>
            <!-- Работа с вложенными массивами -->
            <Item Type="Action">
                <Index><!-- индекс элемента массива --></Index>
                <Actions><!-- цепочка действий. Доступны все действия над массивами--></Actions>
            </Item>
            <!-- Подстановка значений -->
            <Item>
                <Index><!-- индекс элемента массива --></Index>
                <Value><!-- таблица значений --></Value>
            </Item>
            <!-- Выбор из словаря -->
            <Item Type="Field"><!-- название элемента словаря --></Item>
        </Items>
    </Select>
    <!-- Агрегация значений. Операция Reduce/Fold. Для одного элемента - скаляр. Для нескольких элементов одномерный массив значений -->
    <Aggregate>
        <Items>
            <Item>
                <!-- Начальное значение -->
                <Result>0</Result>
                <!-- В выражении могут использоваться элементы массива ([0]) и дополнительные значения ({0}).-->
                <!-- Дополнительно можно добавить переменную Index -->
                <!-- Полученный результат сохраняется в Result и вычисляется значение для следующей строки -->
                <!-- Пример расчёта суммы -->
                <Expression>{Result} + {0}</Expression>
                <Items>
                    <Item></Item>
                <Items>
            </Item>
        </Items>
    </Aggregate>
    <!-- Максимальный элемент. Только для одномерных массивов -->
    <Max Type="" />
    <!-- Минимальный элемент. Только для одномерных массивов -->
    <Min Type="" />
    <!-- Получение индекса первого элемента. -->
    <Filter>
        <Not>
            <And>
                <Or>
                    <Filter Type="Equal">
                        <!-- или Field (для DC) или Index (для массивов)-->
                        <Field></Field>
                        <Index></Index>
                        <DataType Type=""></DataType>
                        <Value></Value>
                    </Filter>
                </Or>
            </And>
        </Not>
    </Filter>
    <!-- Первый элемент -->
    <First />
    <!-- Последний элемент -->
    <Last />
    <!-- Форматирует текущий массив в строку -->
    <!-- Если элемент массива Dictionary<string, object>, то доступны поля по {Key}. Для одномерных массивов {0}, {1} -->
    <Format></Format>
    <!-- Объединяет текущий массив в строку с разделителем -->
    <StringJoin Separator="<!-- разделитель элементов -->" LineSeparator="<!-- разделитель строк -->" />
    <!-- Пропустить N строк -->
    <Skip></Skip>
    <!-- Взять из массива N строк -->
    <Take></Take>
    <!-- Количество элементов в массиве -->
    <Count />
    <!-- Уникальные элементы в массиве. Если теги On не указаны, используется первый элемент -->
    <Distinct>
      <On Index="" />
    </Distinct>
    <!-- Индекс элемента (только для одномерных массивов) -->
    <!-- Содержимое тега аналогично тегу Filter -->
    <IndexOf></IndexOf>
    <!-- Преобразовать одномерный массив в многомерный. Для многомерных ничего не делается -->
    <ToTable />
    <!-- Преобразование значение в одномерный массив -->
    <ToArray />
    <!-- Преобразование двухмерного массива в массив словарей -->
    <ToDictionary>
        <!-- Атрибут Name: название элемента словаря -->
        <!-- Атрибут Index: индекс элемента массива, который будет записан в словарь под именем указанным в атрибуте Name -->
        <Key Name="" Index=""/>
    </ToDictionary>
    <!-- Сортировка (только для одномерных массивов) -->
    <Sort />
    <!-- Сортировка. Если теги By не указаны, используется первый элемент и сортируется по возрастанию  -->
    <Order>
      <By Index="" Type="Asc" />
      <By Index="" Type="Desc" />
    </Order>
    <!-- Объединение массивов -->
    <Union><!-- массив --></Union>
    <!-- Для ConvertDC. Для массива Dictionary<string, object> формирует массив из значений словаря по указанному ключу -->
    <Field><!-- field name --></Field>
    <!-- Преобразовать массив массивов ([[1,2,3,...], [4,5,...]]) в одномерный ([1,2,3,...,4,5,...]) -->
    <SelectMany></SelectMany>
    
    <!--Объединения массивов по ключам-->
	<!-- Inner - текущий массив, Outer - массив с которыем будет соединён текущий -->
    <Join>
      <OuterArray><!-- массив с которым будет текущий соединён--></OuterArray>
	  <!--Ключи по которым будуд соединяться массивы-->
      <Keys>
		<!-- Атрибут Index: индекс элемента массива, который будет использоваться в качестве составного ключа -->
		<!-- Количество тегов Inner и Outer должно совпадать -->
        <Inner Index="" />
        <Inner Index="" />
        <Outer Index="" />
        <Outer Index="" />
      </Keys>
	  <!-- Результат объединения -->
      <Result>
	    <!-- Атрибут Index: индекс элемента массива, который будет добавлен в результирующую строку. Если тег Inner, то значение будет выбрано из исходного массива. Если Outer, то из массива из тега OuterArray -->
        <Inner Index="" />
        <Inner Index="" />
        <Outer Index="" />
        <Outer Index="" />
      </Result>
    </Join>
	<!-- Левостороннее соединение -->
    <LeftJoin>
      <OuterArray></OuterArray>
      <Keys>
        <Inner Index="" />
        <Inner Index="" />
        <Outer Index="" />
        <Outer Index="" />
      </Keys>
      <Result>
        <Inner Index="" />
        <Inner Index="" />
        <Outer Index="" />
        <Outer Index="" />
      </Result>
    </LeftJoin>
	<!-- Правостороннее соединение -->
    <RightJoin>
      <OuterArray></OuterArray>
      <Keys>
        <Inner Index="" />
        <Inner Index="" />
        <Outer Index="" />
        <Outer Index="" />
      </Keys>
      <Result>
        <Inner Index="" />
        <Inner Index="" />
        <Outer Index="" />
        <Outer Index="" />
      </Result>
    </RightJoin>
	<!-- Полное соединение -->
    <FullJoin>
      <OuterArray></OuterArray>
      <Keys>
        <Inner Index="" />
        <Inner Index="" />
        <Outer Index="" />
        <Outer Index="" />
      </Keys>
      <Result>
        <Inner Index="" />
        <Inner Index="" />
        <Outer Index="" />
        <Outer Index="" />
      </Result>
    </FullJoin>
    
</Array>

Описание Array

Значение, которое будет передано в команду при выполнении.

<Array>
  <Source></Source>
  <Operation1></Operation1>
  <Operation2></Operation2>
</Array>

В тэге <Source> указывается любое универсальное значение, с которым выполняются операции указанные после тэга <Source> - Operation1, Operation2. Операций может быть неограниченное количество. При этом операции будут выполняться последовательно в порядке объявления: для первой операции (Operation1) используется значение из тэга <Source>, для последующих операций - результат предыдущей операции.

Все операции можно разделить на группы:

  • Изменение

  • Агрегация

  • Поиск

  • Соединение

  • Выборка из массива

  • Преобразование

  • Сортировка

Изменение

Add

Добавляет элемент или элементы в массив.

<Add><!-- элементы для добавления --></Add>

При добавлении элементов используются следующие правила:

  • Матрица добавляется в Матрицу Строки из матрицы, указанной в тэге <Value>, добавляются в конец матрицы из тэга <Source>.

Пример
<Array>
  <Source>
    <Structure Type="Table">
      <Row>
        <Item>1</Item>
        <Item>Text 1</Item>
      </Row>
      <Row>
        <Item>2</Item>
        <Item>Text 2</Item>
      </Row>
    </Structure>
  </Source>
  <Add>
    <Structure Type="Table">
      <Row>
        <Item>3</Item>
        <Item>Text 3</Item>
      </Row>
      <Row>
        <Item>4</Item>
        <Item>Text 4</Item>
      </Row>
    </Structure>
  </Add>
</Array>

Результат:

+-----+----------+
|  1  |  Text 1  |
|  2  |  Text 2  |
|  3  |  Text 3  |
|  4  |  Text 4  |
+-----+----------+
  • Массив добавляется в Матрицу В массив из тэга <Value> добавляются пустые элементы, чтобы длина массива соответствовала наибольшей длине строки матрицы, указанной в тэге <Source>, и полученный массив добавляются в конец матрицы.

Пример
<Array>
  <Source>
    <Structure Type="Table">
      <Row>
        <Item>1</Item>
        <Item>True</Item>
        <Item>Text 1</Item>
      </Row>
      <Row>
        <Item>2</Item>
        <Item>False</Item>
        <Item>Text 2</Item>
      </Row>
    </Structure>
  </Source>
  <Add>
    <Structure Type="List">
      <Item>3</Item>
      <Item>False</Item>
    </Structure>
  </Add>
</Array>

Результат:

+-----+---------+----------+
|  1  |  True   |  Text 1  |
|  2  |  False  |  Text 2  |
|  3  |  False  |          |
+-----+---------+----------+
  • Скаляр добавляется в Матрицу Скаляр из тэга <Value> преобразуется в массив с длиной соответствующей наибольшей длине строки матрицы, указанной в тэге <Source>, и полученный массив добавляются в конец матрицы.

Пример
<Array>
  <Source>
    <Structure Type="Table">
      <Row>
        <Item>1</Item>
        <Item>True</Item>
        <Item>Text 1</Item>
      </Row>
      <Row>
        <Item>2</Item>
        <Item>False</Item>
        <Item>Text 2</Item>
      </Row>
    </Structure>
  </Source>
  <Add>3</Add>
</Array>

Результат:

+-----+---------+----------+
|  1  |  True   |  Text 1  |
|  2  |  False  |  Text 2  |
|  3  |         |          |
+-----+---------+----------+
  • Матрица добавляется в Массив Первый столбец матрицы, указанной в тэге <Value>, преобразуется в массив и добавляется в конец массива из тэга <Source>.

Пример
<Array>
  <Source>
    <Structure Type="List">
      <Item>1</Item>
      <Item>2</Item>
    </Structure>
  </Source>
  <Add>
    <Structure Type="Table">
      <Row>
        <Item>3</Item>
        <Item>Text 3</Item>
      </Row>
      <Row>
        <Item>4</Item>
        <Item>Text 4</Item>
      </Row>
    </Structure>
  </Add>
</Array>

Результат:

+-----+-----+-----+-----+
|  1  |  2  |  3  |  4  |
+-----+-----+-----+-----+
  • Массив добавляется в Массив Массив из тэга <Value> добавляется в конец массива, указанного в тэге <Source>.

Пример
<Array>
  <Source>
    <Structure Type="List">
      <Item>1</Item>
      <Item>2</Item>
    </Structure>
  </Source>
  <Add>
    <Structure Type="List">
      <Item>3</Item>
      <Item>4</Item>
    </Structure>
  </Add>
</Array>

Результат:

+-----+-----+-----+-----+
|  1  |  2  |  3  |  4  |
+-----+-----+-----+-----+
  • Скаляр добавляется в Массив Скаляр из тэга <Value> добавляется в конец массива, указанного в тэге <Source>.

Пример
<Array>
  <Source>
    <Structure Type="List">
      <Item>1</Item>
      <Item>2</Item>
    </Structure>
  </Source>
  <Add>3</Add>
</Array>

Результат:

+-----+-----+-----+
|  1  |  2  |  3  |
+-----+-----+-----+
  • Во всех случаях, когда в качестве значения тэга <Source> указан скаляр, будет генерироваться ошибка TypeMismatch.

InsertAt

Добавляет элемент или элементы в массив в указанную позицию.

<InsertAt>
  <Index><!-- индекс элемента --></Index>
  <Value><!-- элементы для добавления --></Value>
</InsertAt>

При добавлении элементов используются следующие правила:

  • Матрица добавляется в Матрицу Строки из матрицы, указанной в тэге <Value>, добавляются в конец матрицы из тэга <Source> или в позицию с индексом из тэга <Index>.

Пример
<Array>
  <Source>
    <Structure Type="Table">
      <Row>
        <Item>1</Item>
        <Item>Text 1</Item>
      </Row>
      <Row>
        <Item>2</Item>
        <Item>Text 2</Item>
      </Row>
    </Structure>
  </Source>
  <InsertAt>
    <Index>1</Index>
    <Value>
      <Structure Type="Table">
        <Row>
          <Item>3</Item>
          <Item>Text 3</Item>
        </Row>
        <Row>
          <Item>4</Item>
          <Item>Text 4</Item>
        </Row>
      </Structure>
    </Value>
  </InsertAt>
</Array>

Результат:

+-----+----------+
|  1  |  Text 1  |
|  3  |  Text 3  |
|  4  |  Text 4  |
|  2  |  Text 2  |
+-----+----------+
  • Массив добавляется в Матрицу В массив из тэга <Value> добавляются пустые элементы, чтобы длина массива соответствовала наибольшей длине строки матрицы, указанной в тэге <Source>, и полученный массив добавляются в конец матрицы или в позицию с индексом из тэга <Index>.

Пример
<Array>
  <Source>
    <Structure Type="Table">
      <Row>
        <Item>1</Item>
        <Item>True</Item>
        <Item>Text 1</Item>
      </Row>
      <Row>
        <Item>2</Item>
        <Item>False</Item>
        <Item>Text 2</Item>
      </Row>
    </Structure>
  </Source>
  <InsertAt>
    <Index>1</Index>
    <Value>
      <Structure Type="List">
        <Item>3</Item>
        <Item>False</Item>
      </Structure>
    </Value>
  </InsertAt>
</Array>

Результат:

+-----+---------+----------+
|  1  |  True   |  Text 1  |
|  3  |  False  |          |
|  2  |  False  |  Text 2  |
+-----+---------+----------+
  • Скаляр добавляется в Матрицу Скаляр из тэга <Value> преобразуется в массив с длиной соответствующей наибольшей длине строки матрицы, указанной в тэге <Source>, и полученный массив добавляются в конец матрицы или в позицию с индексом из тэга <Index>.

Пример
<Array>
  <Source>
    <Structure Type="Table">
      <Row>
        <Item>1</Item>
        <Item>True</Item>
        <Item>Text 1</Item>
      </Row>
      <Row>
        <Item>2</Item>
        <Item>False</Item>
        <Item>Text 2</Item>
      </Row>
    </Structure>
  </Source>
  <InsertAt>
    <Index>0</Index>
    <Value>3</Value>
  </InsertAt>
</Array>

Результат:

+-----+---------+----------+
|  3  |         |          |
|  1  |  True   |  Text 1  |
|  2  |  False  |  Text 2  |
+-----+---------+----------+
  • Матрица добавляется в Массив Первый столбец матрицы, указанной в тэге <Value>, преобразуется в массив и добавляется в конец массива из тэга <Source> или в позицию с индексом из тэга <Index>.

Пример
<Array>
  <Source>
    <Structure Type="List">
      <Item>1</Item>
      <Item>2</Item>
    </Structure>
  </Source>
  <InsertAt>
    <Index>1</Index>
    <Value>
      <Structure Type="Table">
        <Row>
          <Item>3</Item>
          <Item>Text 3</Item>
        </Row>
        <Row>
          <Item>4</Item>
          <Item>Text 4</Item>
        </Row>
      </Structure>
    </Value>
  </InsertAt>
</Array>

Результат:

+-----+-----+-----+-----+
|  1  |  3  |  4  |  2  |
+-----+-----+-----+-----+
  • Массив добавляется в Массив Массив из тэга <Value> добавляется в конец массива, указанного в тэге <Source> или в позицию с индексом из тэга <Index>.

Пример
<Array>
  <Source>
    <Structure Type="List">
      <Item>1</Item>
      <Item>2</Item>
    </Structure>
  </Source>
  <InsertAt>
    <Index>0</Index>
    <Value>
      <Structure Type="List">
        <Item>3</Item>
        <Item>4</Item>
      </Structure>
    </Value>
  </InsertAt>
</Array>

Результат:

+-----+-----+-----+-----+
|  3  |  4  |  1  |  2  |
+-----+-----+-----+-----+
  • Скаляр добавляется в Массив Скаляр из тэга <Value> добавляется в конец массива, указанного в тэге <Source> или в позицию с индексом из тэга <Index>.

Пример
<Array>
  <Source>
    <Structure Type="List">
      <Item>1</Item>
      <Item>2</Item>
    </Structure>
  </Source>
  <InsertAt>
    <Index>0</Index>
    <Value>3</Value>
  </InsertAt>
</Array>

Результат:

+-----+-----+-----+
|  3  |  1  |  2  |
+-----+-----+-----+
  • Во всех случаях, когда в качестве значения тэга <Source> указан скаляр, будет генерироваться ошибка TypeMismatch.

Update

Обновляет элемент в массиве/матрице в указанной позиции.

<Update>
  <Index><!-- индекс элемента --></Index>
  <Value><!-- элемент для обновления --></Value>
</Update>

При обновлении элементов используются следующие правила:

  • Массив добавляется в Матрицу В массив из тэга <Value> добавляются пустые элементы, чтобы длина массива соответствовала наибольшей длине строки матрицы, указанной в тэге <Source>, и полученный массив записывается в элемент с индексом <Index>.

Пример
<Array>
  <Source>
    <Structure Type="Table">
      <Row>
        <Item>1</Item>
        <Item>True</Item>
        <Item>Text 1</Item>
      </Row>
      <Row>
        <Item>2</Item>
        <Item>False</Item>
        <Item>Text 2</Item>
      </Row>
    </Structure>
  </Source>
  <Update>
    <Index>0</Index>
    <Value>
      <Structure Type="List">
        <Item>3</Item>
        <Item>False</Item>
      </Structure>
    </Value>
  </Update>
</Array>

Результат:

+-----+---------+----------+
|  3  |  False  |          |
|  2  |  False  |  Text 2  |
+-----+---------+----------+
  • Скаляр добавляется в Матрицу Скаляр из тэга <Value> преобразуется в массив с длиной соответствующей наибольшей длине строки матрицы, указанной в тэге <Source>, и полученный массив записывается в элемент с индексом <Index>.

Пример
<Array>
  <Source>
    <Structure Type="Table">
      <Row>
        <Item>1</Item>
        <Item>True</Item>
        <Item>Text 1</Item>
      </Row>
      <Row>
        <Item>2</Item>
        <Item>False</Item>
        <Item>Text 2</Item>
      </Row>
    </Structure>
  </Source>
  <Update>
    <Index>0</Index>
    <Value>3</Value>
  </Update>
</Array>

Результат:

+-----+---------+----------+
|  3  |         |          |
|  2  |  False  |  Text 2  |
+-----+---------+----------+
  • Матрица добавляется в Массив Берет первый элемент первой строки матрицы, указанной в тэге <Value>, и записывается в элемент с индексом <Index> массива из тэга <Source>.

Пример
<Array>
  <Source>
    <Structure Type="List">
      <Item>1</Item>
      <Item>2</Item>
    </Structure>
  </Source>
  <Update>
    <Index>0</Index>
    <Value>
      <Structure Type="Table">
        <Row>
          <Item>3</Item>
          <Item>Text 3</Item>
        </Row>
        <Row>
          <Item>4</Item>
          <Item>Text 4</Item>
        </Row>
      </Structure>
    </Value>
  </Update>
</Array>

Результат:

+-----+-----+
|  3  |  2  |
+-----+-----+
  • Массив добавляется в Массив Берется первый элемент массива из тэга <Value> и записывается в элемент с индексом <Index> массива, указанном в тэге <Source>.

Пример
<Array>
  <Source>
    <Structure Type="List">
      <Item>1</Item>
      <Item>2</Item>
    </Structure>
  </Source>
  <Update>
    <Index>0</Index>
    <Value>
      <Structure Type="List">
        <Item>3</Item>
        <Item>4</Item>
      </Structure>
    </Value>
  </Update>
</Array>

Результат:

+-----+-----+
|  3  |  2  |
+-----+-----+
  • Скаляр добавляется в Массив Скаляр из тэга <Value> записывается в элемент с индексом <Index> массива, указанного в тэге <Source>.

Пример
<Array>
  <Source>
    <Structure Type="List">
      <Item>1</Item>
      <Item>2</Item>
    </Structure>
  </Source>
  <Update>
    <Index>0</Index>
    <Value>3</Value>
  </Update>
</Array>

Результат:

+-----+-----+
|  3  |  2  |
+-----+-----+
  • Во всех случаях, когда в качестве значения тэга <Source> указан скаляр, будет генерироваться ошибка TypeMismatch.

Remove

Удаляет элемент(ы) по индексу или индексам.

<Remove><!-- индекс или массив индексов --></Remove>

Если в качестве значения тэга <Source> указан скаляр, то будет генерироваться ошибка TypeMismatch.

Пример 1. Удаление элемента из матрицы
<Array>
  <Source>
    <Structure Type="Table">
      <Row>
        <Item>1</Item>
        <Item>Text 1</Item>
      </Row>
      <Row>
        <Item>2</Item>
        <Item>Text 2</Item>
      </Row>
      <Row>
        <Item>3</Item>
        <Item>Text 3</Item>
      </Row>
    </Structure>
  </Source>
  <Remove>1</Remove>
</Array>

Результат:

+-----+----------+
|  1  |  Text 1  |
|  3  |  Text 3  |
+-----+----------+
Пример 2. Удаление элемента из массива
<Array>
  <Source>
    <Structure Type="List">
      <Item>1</Item>
      <Item>2</Item>
      <Item>3</Item>
    </Structure>
  </Source>
  <Remove>1</Remove>
</Array>

Результат:

+-----+-----+
|  1  |  3  |
+-----+-----+
Пример 3. Удаление элементов из матрицы
<<Array>
  <Source>
    <Structure Type="Table">
      <Row>
        <Item>1</Item>
        <Item>Text 1</Item>
      </Row>
      <Row>
        <Item>2</Item>
        <Item>Text 2</Item>
      </Row>
      <Row>
        <Item>3</Item>
        <Item>Text 3</Item>
      </Row>