Разбор и анализ xml-файла в TestComplete

NovaInfo 2, скачать PDF
Опубликовано
Раздел: Технические науки
Просмотров за месяц: 1

Аннотация

В данной статье мы рассмотрим принцип работы XML в TestComplete. Как я уже писал в своем блоге, технология XML стала популярной за счет своей универсальности и используется во многих областях применения информационных технологий. Одной из таких областей является банковская сфера. В частности, передача данных в XML-формате. Для проверки правильности таких файлов необходим разбор их структуры и сравнение с эталонным значением.

Ключевые слова

XML, TESTCOMPLETE

Текст научной работы

В данной статье мы рассмотрим принцип работы XML в TestComplete. Как я уже писал в своем блоге, технология XML стала популярной за счет своей универсальности и используется во многих областях применения информационных технологий. Одной из таких областей является банковская сфера. В частности, передача данных в XML-формате. Для проверки правильности таких файлов необходим разбор их структуры и сравнение с эталонным значением. Для разбора будем использовать MS XML. Подробнее можно узнать на сайте Microsoft.

Для начала разбора XML файла необходимо загрузить его структуру в переменную:

var Obj: OleVariant;Obj := Sys.OleObject('Msxml2.DOMDocument');Obj.async := false;Obj.load('C:/filename.xml');

Далее можем проводить разбор структуры файла.

Допустим мы имеем следующий XML-файл, который содержит в себе список продуктов для покупки:

<?xml version="1.0" encoding="utf-8"?><list>  <item number="1" volume="0.5">Молоко</item>  <item number="1">Хлеб</item>  <item volume="1" type="Говядина">Мясо</item>  <item volume="1">Рис</item>  <item volume="1">Греча</item>  <item volume="1">Яблоки</item></list>

Получаем корневой элемент list:

list := Obj.documentElement;

Перебираем все элементы списка, используя метод childNodes, который содержит в себе все дочерние узлы данного узла (в нашем случае это корневой узел):

for i := 0 to list.childNodes.length - 1 do  node := list.childNodes.item(i);

Для того, чтобы получить наименование элемента списка нужно получить значение узла. Для этого используем метод firstChild. C помощью его получаем текстовый узел. И далее воспользуемся свойством nodeValue, чтобы получить содержимое текстового узла:

name := node.firstChild.nodeValue;

Это немного сложно для понимания. Необходимо запомнить, что каждый участок XML-файла является отдельным узлом, т.е. <item volume="1">Греча</item>
состоит из трех узлов:

  1. Элемент item, который содержит в себе:
    1. Параметр volume;
    2. Текст;

Каждый из узлов имеет свой тип, который можно узнать используя свойство nodeType. Полезными для нас являются следующие значения:

  1. Элемент;
  2. Параметр;
  3. Текст.

Исходя из вышеизложенного перебор списка покупок необходимо переписать следующим способом:

for i := 0 to list.childNodes.length - 1 do if list.childNodes.item(i).nodeType = 1 then    node := list.childNodes.item(i);

Таким образом мы сможем избежать ошибок связанных с обработкой лишних узлов, которыми являются пробелы между элементами списка.

Существует другой способ перебора всех элементов узла с одинаковым именем. Он основан на использовании метода getElementsByTagName:

nodes := list.getElementsByTagName('item');for i := 0 to nodes.length - 1 do  node := nodes.item(i);

В завершении статьи рассмотрим методы работы с параметрами элементов.

Для получения значения параметра узла можно воспользоваться методом getAttribute:

number := node.getAttribute('number');

В случае, если данного параметра может и не быть, то сначала необходимо проверить его существование:

if node.getAttributeNode('number') <> nil then  number := node.getAttribute('number');

Читайте также

Цитировать

Долганов, А.А. Разбор и анализ xml-файла в TestComplete / А.А. Долганов. — Текст : электронный // NovaInfo, 2010. — № 2. — URL: https://novainfo.ru/article/156 (дата обращения: 08.06.2023).

Поделиться