1С: Работа с внешними файлами. Работа с XML

Работа с XML

Оглавление (нажмите, чтобы раскрыть)

Запись XML файла

Пример записи XML файла из 1С
ФайлXML = Новый ЗаписьXML;
//Открываем файл для записи в кодировке UTF-8   
ФайлXML.ОткрытьФайл("C:\tmp\1.xml", "UTF-8");
ФайлXML.ЗаписатьОбъявлениеXML();

//Добавляем элемент "Номенклатура"
ФайлXML.ЗаписатьНачалоЭлемента("Номенклатура");

Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
    //Элемент "Строка" 
    //для каждой записи справочника
    ФайлXML.ЗаписатьНачалоЭлемента("Строка");
    //Код записаваем в атрибут
    ФайлXML.ЗаписатьАтрибут("Код",
        Выборка.Код);
    //Наименование записываем в текст элемента
    ФайлXML.ЗаписатьТекст(Выборка.Наименование);
    //Закрываем элемент "Строка"
    ФайлXML.ЗаписатьКонецЭлемента();
КонецЦикла;

//Закрываем элемент "Номенклатура"
ФайлXML.ЗаписатьКонецЭлемента();
ФайлXML.Закрыть();

Чтение XML + ПостроительDOM

Пример чтения XML файла из 1С с использованием «ПостроительDom»
//Формат читаемого файла:
//<Номенклатура>
//    <Строка Код="1">Стол
//    <Строка Код="2">Стул
//

ЧтениеXML = Новый ЧтениеXML;
//Открываем файл
ЧтениеXML.ОткрытьФайл("C:\tmp\1.xml");
//Прочитываем файл
ПостроительDOM = Новый ПостроительDOM;
ФайлXML = ПостроительDOM.Прочитать(ЧтениеXML);
//Получаем список номенклатуры
Номенклатура = ФайлXML.ЭлементДокумента.ДочерниеУзлы;

//Заносим номенклатру в массив Строки
Строки = Новый Массив;
Для Каждого Узел из Номенклатура Цикл
    Строка = Новый Структура("Код,Наименование");
    //Получаем значение атрибута "Код"
    Код = Узел.Атрибуты[0].Значение;
    //Получаем значение элемента "Строка"
    Наименование = Узел.ТекстовоеСодержимое;

    Строка.Код = Код;
    Строка.Наименование = Наименование;
    Строки.Добавить(Строка);
КонецЦикла;

ЧтениеXML.Закрыть();

Чтение XML файла

Пример чтения XML файла из 1С
//Формат читаемого файла:
//<Номенклатура>
//    <Строка Код="1">Стол
//    <Строка Код="2">Стул
//

ЧтениеXML = Новый ЧтениеXML;
//Открываем файл
ЧтениеXML.ОткрытьФайл("C:\tmp\1.xml");

Строки = Новый Массив;
Пока ЧтениеXML.Прочитать() Цикл
    Если (ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента) И 
         (ЧтениеXML.Имя = "Строка") Тогда
        Строка = Новый Структура("Код,Наименование");
        //Получаем значение атрибута "Код"
        Код = ЧтениеXML.ПолучитьАтрибут("Код");
        //Получаем значение элемента "Строка"
        Пока ЧтениеXML.Прочитать() Цикл
            Если (ЧтениеXML.ТипУзла = ТипУзлаXML.Текст) Тогда
                Наименование = ЧтениеXML.Значение;
                Прервать;
            КонецЕсли;
        КонецЦикла;

        Строка.Код = Код;
        Строка.Наименование = Наименование;
        Строки.Добавить(Строка);
    КонецЕсли;
КонецЦикла;

ЧтениеXML.Закрыть();
Ключи: |