Чтение файла в формате XML по порядку (способ №1) в 1С 8.3



//Подходит для файлов более 100Mb

&НаСервере

Процедура ПрочитатьФайлXMLПоПорядкуСпособ1(ПутьКФайлу)



XML = Новый ЧтениеXML;

XML.ОткрытьФайл(ПутьКФайлу);



Пока XML.Прочитать() Цикл



Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента И XML.Имя = "Ресторан" Тогда



Название = XML.ЗначениеАтрибута("Название");

Если Название <> Неопределено Тогда

Сообщить("Название ресторана:" + Название);

КонецЕсли;



Категория = XML.ЗначениеАтрибута("Категория");

Если Категория <> Неопределено Тогда

Сообщить("...наценочная категория ресторана: " + Категория);

КонецЕсли;



Счет = XML.ЗначениеАтрибута("Счет");

Если Счет <> Неопределено Тогда

Сообщить("...средний счет ресторана: " + Счет);

КонецЕсли;



Кухня = XML.ЗначениеАтрибута("Кухня");

Если Кухня <> Неопределено Тогда

Сообщить("...кухня ресторана: " + Кухня);

КонецЕсли;



Пока XML.Прочитать() Цикл// <Ресторан>



Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента И XML.Имя = "Меню" Тогда

Сообщить("Меню:");



Пока XML.Прочитать() Цикл// <Меню>

Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента И XML.Имя = "Блюдо" Тогда

Название = XML.ЗначениеАтрибута("Название");

Если Название <> Неопределено Тогда

Сообщить("...название блюда:" + Название);

КонецЕсли;

ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента И XML.Имя = "Меню" Тогда

Прервать;

КонецЕсли;

КонецЦикла;//



ИначеЕсли XML.ТипУзла = ТипУзлаXML.НачалоЭлемента И XML.Имя = "Описание" Тогда



XML.Прочитать();

Если XML.ТипУзла = ТипУзлаXML.Текст Тогда

Сообщить("Описание:" + XML.Значение);

КонецЕсли;



ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента И XML.Имя = "Ресторан" Тогда



Прервать;



КонецЕсли;



КонецЦикла;//



КонецЕсли;



КонецЦикла;



XML.Закрыть();



КонецПроцедуры








✍️ @odin1C_rus