ЗАПИСЬ В XML-ФАЙЛ Для записи элемента XML-документа используются методы ЗаписатьНачалоЭлемента(), ЗаписатьАтрибут(), Записать-Текст(), ЗаписатьКонецЭлемента(), которые производят запись соответствующего узла элемента XML в файл ФОРМАТ ОПИСАНИЕ ЭЛЕМЕНТА (УЗЛА) <ИМЯ АТРИБУТ=Значение> Содержимое (Текст или описание другого элемента) </ИМЯ> ЗаписьXML.ЗаписатьНачалоЭлемента("ИМЯ"); ЗаписьXML.ЗаписатьАтрибут("АТРИБУТ", "Значение"); ЗаписьXML.ЗаписатьТекст("Содержимое (Текст или описание другого элемента)"); ЗаписьXML.ЗаписатьКонецЭлемента();
Если при определении начала элемента в соответствующем методе указывается его имя, то при закрытии имя не указывается. Закрывается элемент открытый последним. ЗаписьХМL = Новый ЗаписьXML; ЗаписьXML. ОткрытьФайл( "с: \document. xml"); // Записать директиву ЗаписьXML.ЗаписатьОбъявлениеХМL(); // Записать начало корневого элемента ЗаписьXML.ЗаписатьНачалоЭлемента( "Корневой"); // Записать атрибут корневого элеиента ЗаписьXML.ЗаписатьАтрибут("ИмяСправочника", "Номенклатура"); ЗаписьXML. ЗаписатьКомментарий("Выгрузка элементов справочника"); Выборка = Справочники.Номенклатура.Выбрать(); Пока Выборка.Следующий() Цикл Если Не Выборка.ЭтоГруппа Тогда ЗаписьXML.ЗаписатьНачалоЭлемента("ЭлементСправочника"); ЗаписьXML.ЗаписатьНачалоЭлемента( "Код"); ЗаписьXML.ЗаписатьТекст(Строка(Выборка.Код)); ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьНачалоЭлемента( "Наименование"); ЗаписьХМ ЗаписатьТекст (Выборка. Наименование): ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьНачалоЭлемента("ЗакупочнаяЦена"); ЗаписьXML.ЗаписатьТекст(Строка(Выборка.ЗакупочнаяЦена)); ЗаписьXML. ЗаписатьКонецЭлемента();
ЗаписьXML. ЗаписатьКонецЭлемента(); //Относится к "ЭлементСправочка" КонецЕсли; КонецЦикла; ЗаписьXML. ЗаписатьКонецЭлемента(); //Относится к элементу "Корневой" ЗаписьXML.Закрыть();
В результате получится следующее: <?xml version="1.0"?> <Корневой ИмяСправочника="Номенклатура"> <!--Выгрузка элементов справочника--> <ЭлементСправочника> <Код>5</Код> <Наименование>BOSCH KGS 3760 IE </Наименование> <ЗакупочнаяЦена>24 000</ЗакупочнаяЦена> </ЭлементСправочника> <ЭлементСправочника> <Код>6</Код> <Наименование>ELECTROLUX ER 9007 В</Наименование> <ЗакупочнаяЦена>38 000</ЗакупочнаяЦена> </ЗлементСправочника> <ЭлементСправочника> <Код>3</Код> < Наименование>Indesit WS 105 ТХ</Наименование> <ЗакупочнаяЦена>10 000</ЗакупочнаяЦена> </ЭлементСправочника> <ЭлементСправочника> <Код>7</Код> <Наименование>Атлант МХМ 1704-00</Наименование> <ЗакупочнаяЦена>14 000</ЗакупочнаяЦена> </ЭлементСправочника> <ЭлементСправочника> <Код>2</Код> <Наименование>Агdo TL 1000 ЕХ-1</Наименование> <ЗакупочнаяЦена>8 000</ЗакупочнаяЦена> </ЭлементСправочника> </Корневой> ЧТЕНИЕ ИЗ XML-файла При использовании сериализации при записи в XML-файл: ПрочитатьXML() возвращает считанное из XML значение, но это значение еще не записано в базу данных. Если, например, считан элемент справочника, то для того, чтобы считанный элемент справочника оказался запи¬санным в базу данных, необходимо обратиться к его ме¬тоду Записать(), как и при «обычной» записи изменен¬ного состояния объекта. Это же относится и к другим объектам базы данных, менеджерам записи констант и наборам записей. При чтении объекта базы данных из XML в базе данных производится поиск объекта с таким же значением ссылки Если такой объект найден, то считывание из XML выглядит так, как будто объект был прочитан из базы данных, после чего значения его реквизитов, таб¬личных частей и т. п. перезаписываются полученными из XML значениями. Если же объект по ссылке не найден, то считывание из XML выглядит как создание но¬вого объекта, установка ему значения ссылки и заполнение его содержимого значениями, прочитанными из XML.
Файл = Новый ЧтениеХМL; Файл.ОткрытьФайл("с:\document.xml");
// Прочитать фрагменты элемента Пока Файл.Прочитать() Цикл
// После чтения проверить тип узла Если Файл.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда Сообщить(Файл.Имя);
// Прочитать атрибуты Пока Файл.ПрочитатьАтрибут() Цикл Сообщить("атрибут:" + Файл.Имя + "=" + Файл.Значение); КонецЦикла; КонецЕсли.
Если Файл.ТипУзла = ТипУзлаXML.Текст Тогда Сообщить(Файл.Значение); КонецЕсли; Если Файл.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда Сообщить("/" + Файл.Имя); КонецЕсли; КонецЦикла;
Файл.Закрыть();
|