3434//
3535// Параметры:
3636// ПутьКФайлу - Строка - путь к файлу с данными xml
37+ // ИспользоватьПолноеИмяУзла - Булево - читать полные имена узлов xml, локальные имена если "Ложь" (по умолчанию)
3738//
3839// Возвращаемое значение:
3940// Соответствие, Структура - результат чтения данных xml
4041//
41- Функция ПрочитатьИзФайла (Знач ПутьКФайлу ) Экспорт
42+ Функция ПрочитатьИзФайла (Знач ПутьКФайлу , Знач ИспользоватьПолноеИмяУзла = Ложь ) Экспорт
4243
4344 Чтение = Новый ЧтениеXML;
4445 Чтение.ОткрытьФайл(ПутьКФайлу);
4546
46- Результат = ПрочитатьXML (Чтение);
47+ Результат = ПрочитатьXML (Чтение, , ИспользоватьПолноеИмяУзла );
4748
4849 Чтение.Закрыть();
4950
5455// Выполняет сериализацию данных в файла
5556//
5657// Параметры:
57- // ДанныеЗаписиXML - Соответствие, Массив, Структура, Число, Строка. Дата - данные для сериализации в XML
58+ // ДанныеЗаписиXML - Соответствие, Массив, Структура, Число, Строка, Дата - данные для сериализации в XML
5859// ПутьКФайлу - Строка - путь к файлу с данными xml
5960// ЗаписатьОбъявлениеXML - Булево - признак добавления записи объявления XML
6061//
7879// Параметры:
7980// ЧтениеXML - ЧтениеXML - <описание параметра>
8081// ИмяКорневогоУзла - Строка - имя текущего узла, для вызова рекурсии
82+ // ИспользоватьПолноеИмяУзла - Булево - читать полные имена узлов xml, локальные имена если "Ложь" (по умолчанию)
8183//
8284// Возвращаемое значение:
8385// Соответствие, Структура - результат чтения данных xml
8486//
85- Функция ПрочитатьXML (Знач ЧтениеXML , Знач ИмяКорневогоУзла = "" ) Экспорт
86-
87+ Функция ПрочитатьXML (Знач ЧтениеXML , Знач ИмяКорневогоУзла = "" , Знач ИспользоватьПолноеИмяУзла = Ложь ) Экспорт
88+
8789 РезультатЧтения = Новый Структура;
8890 Атрибуты = Новый Соответствие;
8991 Элементы = Новый Соответствие;
9698 ПрочитатьАтрибуты(ЧтениеXML, Атрибуты);
9799
98100 Если Не ЧтениеXML.ТипУзла = ТипУзлаXML.КонецСущности Тогда
99- ПрочитатьУзлы(ЧтениеXML, РезультатЧтения, ИмяКорневогоУзла);
101+ ПрочитатьУзлы(ЧтениеXML, РезультатЧтения, ИмяКорневогоУзла, ИспользоватьПолноеИмяУзла );
100102 КонецЕсли ;
101103
102104 УпроститьРезультатЧтения(РезультатЧтения);
111113//
112114// Параметры:
113115// ЗаписьXML - ЗаписьXML - подготовленная запись ЗаписьXML
114- // ДанныеЗаписиXML - Соответствие, Массив, Структура, Число, Строка. Дата - данные для сериализации в XM
116+ // ДанныеЗаписиXML - Соответствие, Массив, Структура, Число, Строка, Дата - данные для сериализации в XM
115117//
116118Процедура ЗаписатьXML (Знач ЗаписьXML , Знач ДанныеЗаписиXML ) Экспорт
117119
295297
296298КонецПроцедуры
297299
298- Процедура ПрочитатьУзлы (Знач ЧтениеXML , КорневойУзел , Знач ИмяКорневогоУзла )
300+ Процедура ПрочитатьУзлы (Знач ЧтениеXML , КорневойУзел , Знач ИмяКорневогоУзла , Знач ИспользоватьПолноеИмяУзла )
299301
300302 Пока ЧтениеXML.Прочитать() Цикл
301303
302304 Лог.Отладка("Тип узла <%1>" , ЧтениеXML.ТипУзла);
303- Лог.Отладка("Имя узла <%1>" , ЧтениеXML.ЛокальноеИмя);
305+
306+ ИмяУзла = ИмяУзла(ЧтениеXML, ИспользоватьПолноеИмяУзла);
307+ Лог.Отладка("Имя узла <%1>" , ИмяУзла);
304308
305309 Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента
306- И ЧтениеXML.ЛокальноеИмя = ИмяКорневогоУзла Тогда
310+ И ИмяУзла = ИмяКорневогоУзла Тогда
307311 Прервать ;
308312 КонецЕсли ;
309313
310314 Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
311315
312- ИмяНовогоУзла = ЧтениеXML.ЛокальноеИмя ;
316+ ИмяНовогоУзла = ИмяУзла( ЧтениеXML, ИспользоватьПолноеИмяУзла) ;
313317 Лог.Отладка("Новый узел <%1>" , ИмяНовогоУзла);
314- СоответствиеУзла = ПрочитатьXML (ЧтениеXML, ИмяНовогоУзла);
318+ СоответствиеУзла = ПрочитатьXML (ЧтениеXML, ИмяНовогоУзла, ИспользоватьПолноеИмяУзла );
315319 ВставитьЭлементУзла(КорневойУзел, ИмяНовогоУзла, СоответствиеУзла);
316320
317321 ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
376380
377381КонецПроцедуры
378382
383+ Функция ИмяУзла (ЧтениеXML , Знач ИспользоватьПолноеИмяУзла )
384+
385+ Если ИспользоватьПолноеИмяУзла Тогда
386+ ИмяУзла = ЧтениеXML.Имя;
387+ Иначе
388+ ИмяУзла = ЧтениеXML.ЛокальноеИмя;
389+ КонецЕсли ;
390+
391+ Возврат ИмяУзла;
392+
393+ КонецФункции
394+
379395#КонецОбласти
0 commit comments