Запись Чтение XML 2

Артур 115 3 1 3
XML
   //Имя справочника для примера
    ИмяСправочника = "Номенклатура";
    
    ////////////////////////////////////////////////////////////­/////////////
    //Выгрузка
    
    Запись = Новый ЗаписьXML;
    Запись.УстановитьСтроку();
    
    //записываем объявление xml файла: <?xml version="1.0"?>
    Запись.ЗаписатьОбъявлениеXML();
    
    //записываем корневой элемент, по спецификации xml он может быть только один, назовем его "Данные"
    Запись.ЗаписатьНачалоЭлемента("Данные");
    
    //для того чтобы пространства имен не объявлялись сериализатором в кажом элементе, пишем их в корневой элемент
    //они будут работать на все вложеные элементы
    //пространство имен по-умолчанию
    Запись.ЗаписатьСоответствиеПространстваИмен("", "http://v8.1c.ru/8.1/data/enterprise/current-config");
    
    //пространства имен остальные префиксы
    Запись.ЗаписатьСоответствиеПространстваИмен("xsd", "http://www.w3.org/2001/XMLSchema");
    Запись.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
    
    //ограничение количества выгружаемых элементов для примера
    Кол = 4;
    Выборка = Справочники[ИмяСправочника].Выбрать();
    Пока Выборка.Следующий() Цикл
        
        //вместо этого кода в боевой реализации выгрузки будет создание ОбъектаXDTO и его сериализация
        //через ФабрикуXDTO и загруженные в нее схемы конфигурации приемника
        СериализаторXDTO.ЗаписатьXML(Запись, Выборка.ПолучитьОбъект());
        //
        
        Кол = Кол - 1;
        Если Кол=0 Тогда
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    //записываем конец корневого элемента
    Запись.ЗаписатьКонецЭлемента();
    
    //покажем что получилось
    Текст = Запись.Закрыть();
    Сообщить("Содержимое файла:");
    Сообщить(Текст);
    
    //а теперь загрузим это обратно
    
    ////////////////////////////////////////////////////////////­/////////////
    //Загрузка
    Сообщить("Данные полученные при загрузке:");
    
    Чтение = Новый ЧтениеXML;
    Чтение.УстановитьСтроку(Текст);
    
    //прочитаем начало xml файла
    Чтение.ПерейтиКСодержимому();
    
    //прочитаем начало корневого элемента
    Чтение.Прочитать();
    
    //читаем содержимое пока текущим не станет конец корневого элемента, т.к. мы писали туда только целые элементы справочника,
    //а сериализатор читает каждый из их полностью, то мы упремся именно в конец корневого
    Пока Чтение.ТипУзла<>ТипУзлаXML.КонецЭлемента Цикл
        
        //читаем очередной элемент справочника
        Объект = СериализаторXDTO.ПрочитатьXML(Чтение);
        
        //покажем что прочитали, осталось только записать объект
        Сообщить(""+ТипЗнч(Объект)+" - "+Объект);
    КонецЦикла;
    
    Чтение.Закрыть();
0
Орфографическая ошибка в сериализатором: сериализатором
Орфографическая ошибка в кажом: кажом
Орфографическая ошибка в вложеные: вложеные
Орфографическая ошибка в сериализация: сериализация

См. также

Чтение XML через DOM

ПроизвестиЧтениеДанных (БСП)

Чтение Excel через Табличный документ

ЗаписьЖурнала (БСП)

СоздатьЗаписьДоступныеЛицензии (БСП)

Запись документа XML иерархия

ОписаниеОтчета (БСП)

ОписаниеВарианта (БСП)

ЕстьПравоЧтенияИнформацииОВерсияхОбъектов (БСП)

Модератору