Чтение файла в формате XML по порядку (способ №1) в 1С 8.3
✍️ @odin1C_rus
//Подходит для файлов более 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