Приветствую Вас, Гость
Главная » Примеры » Экспорт/импорт данных с помощью файлов формата XML

Экспорт/импорт данных с помощью файлов формата XML. [1]

В разделе примеров: 1
Показано примеров: 1-1

Расширяемый язык разметки XML (eXtensible Markup Language) представляет собой современное средство для хранения и конвертирования данных. В документе XML данные образуют древовидную структуру, что для большинства пользователей является наиболее понятным способом организации данных. Для начала приведем краткое описание самых простых правил языка XML.

Весь текст xml-документа можно грубо разделить на две категории - символьные данные и тэги. Тэг представляет собой команду, которая начинается с символа "<" и заканчивается символом ">". В отличие от фиксированного набора тэгов языка HTML имена и структуру тэгов XML разработчик xml-документа задает сам. Символьные данные - это те структурированные данные, которые хранятся в документе.

Xml-документ начинается со строки, самый простой вариант, которой имеет следующий вид:


Эта строка называется определением xml.За ним следуют элементы, которые представляют собой узлы древовидной структуры xml-документа. В силу древовидности структуры xml-документ должен иметь единственный корневой элемент, являющийся контейнером для всех остальных. Любой элемент состоит из открывающего и закрывающего тэгов, например, <book>...</book>. Имя элемента называют его общим идентификатором или типом. Текст между открывающим и закрывающим тэгами называется содержимым элемента. Например, в следующем фрагменте:

<book> О.В.Бартеньев. 1С:Предприятие. Опыты программирования.</book>

book- это тип элемента, а строка "О.В.Бартеньев. 1С:Предприятие. Опыты программирования." - его содержимое. Элемент, лишенный содержимого, называется пустым элементом. Открывающий и закрывающий тэги пустого элемента можно объединить в один тэг, поместив в его конец косую черту <EmptyElement/>. В принципе, допускается запись пустого элемента с помощью открывающего и закрывающего тэгов без содержимого (<EmptyElement></EmptyElement>). Фактически оба способа имеют свое применение, поскольку могут быть элементы, которые случайно оказываются пустыми с точки зрения хранения пустого содержимого, а могут существовать элементы, которые не имеют содержимого по определению.

У элементов могут быть атрибуты. Атрибут - это пара имя-значение, расположенная в открывающем тэге элемента. Значения атрибутов должны быть заключены в одинарные или двойные кавычки. Фактически в виде атрибутов часто хранятся значения некоторых свойств. Например, предыдущий пример с элементом, хранящим информацию о книге, можно переформулировать так:

<book author=" О.В.Бартеньев">1С:Предприятие. Опыты программирования.</book>

Для работы с документами xml требуется наличие так называемого парсера - специальной программы-анализатора, которая отслеживает выполнение синтаксических правил языка. Браузер MS Internet Explorer имеет встроенный парсер языка XML. Для работы с xml-документами в среде 1С:Предприятие используется внешняя компонента v7plus.dll. Таким образом, первый шаг при работе с xml-документами в системе 1С:Предприятие состоит в том, что требуется загрузить эту внешнюю компоненту. Следующий фрагмент кода позволяет осуществить эту загрузку внешней компоненты, если она находится в каталоге информационной базы для конфигурации

Если ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"v7plus.dll") <> 1 Тогда
   Предупреждение("Компонента v7plus.dll не найдена!");
   Возврат; //прервать выполнение процедуры
КонецЕсли;

Далее можно заняться собственно работой с xml-документом. Создадим объект, который представляет собой анализатор xml-документа.

Анализатор = СоздатьОбъект("AddIn.XMLParser");

Разберем процесс работы по созданию нового xml-документа. С помощью объекта-анализатора создадим пустой xml-документ.

xml=Анализатор.СоздатьДокумент();

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

Корень=xml.СоздатьПодчиненныйЭлемент("КорневойЭлемент");
Подчинен=Корень.СоздатьПодчиненныйЭлемент("ПодчиненныйЭлемент");

В результате в xml-документ будут построены два элемента КорневойЭлемент и ПодчиненныйЭлемент, причем второй будет подчинен первому.

Если элемент имеет атрибут, то его значение можно установить с помощью процедуры УстановитьАтрибут(НазваниеАтрибута, ЗначениеАтрибута). Эту процедуру нужно вызвать для объекта, хранящего ссылку на конкретный элемент xml-документа, указав в качестве первого параметра символьную строку с названием атрибута и в качестве второго параметра - его значение. Например, установим подчиненному элементу атрибут имя со значением Подчиненный.

Подчинен.УстановитьАтрибут("имя","Подчиненный");

Установить содержимое элемента можно напрямую с помощью атрибута Значение объекта, соответствующего этому элементу.

Подчинен.Значение="Это текст внутри подчиненного элемента";

В результате будет создан xml-документ такого вида:


<КорневойЭлемент>
   <ПодчиненныйЭлемент имя="Подчиненный">
    Это текст внутри подчиненного элемента
   </ПодчиненныйЭлемент>
</КорневойЭлемент>

Как и при работе с любыми другими форматами данных, сделанные изменения требуется зафиксировать, т.е. записать в файл. Это делает процедура Записать(ПутьКФайлу), которая вызывается для объекта Анализатор, отвечающего за весь документ.

Теперь посмотрим, как производить чтение данных из xml-файла. Загрузка внешней компоненты и создание объекта-парсера, естественно, обязательно провести и здесь. Далее также создается ссылка на xml-документ с помощью функции СоздатьДокумент. Далее следует связать его с конкретным файлом с помощью метода Загрузить(ИмяФайла). Доступ к отдельным узлам xml-документа осуществляется с помощью функции ВыбратьУзел(НазваниеУзла). Функция вернет ссылку на требуемый узел xml-документа, если он один. Например,

ФайлДанных=Анализатор.СоздатьДокумент();
ФайлДанных.Загрузить(Файл);
Корень=ФайлДанных.ВыбратьУзел("КорневойУзел");

Эта же функция применяется и к любому другому элементу xml-документа для получения доступа к его подчиненным элементам. Если подчиненных элементов несколько, узнать их количество можно с помощью функции КоличествоПодчиненных(), примененной к объекту родительского элемента. Далее каждый из подчиненных элементов можно получить с помощью функции ПолучитьПодчиненныйПоНомеру(НомерЭлемента). Для каждого элемента можно получить его атрибуты с помощью функции ПолучитьАтрибут(НазваниеАтрибута), а также содержимое элемента с помощью атрибута Значение объекта, содержащего ссылку на элемент.

Экспорт/импорт данных с помощью файлов формата XML. | Просмотров: 672 | Дата: 14.10.2011