В XMLlite - уровень закрывающего тега
имеем простой XML
.

.
Тэги ГРУППА и ЭЛЕМЕНТИ - уровень=3
Тэги ЕДИНИЦЫ - уровень4
Грузим файлик тестовой обработкой прилагаемой к реализации XMLlite в 1с++
.

.
А почему закрывающий тег /ЭЛЕМЕНТ - уровень имеет такой же как вложенный в него тег ЕДИНИЦЫ..?? это правильно?
уровень для закрывающего тега дает GetDepth - вроде все просто...
.
Процедура XMLLiteRead(__источник ="")
_nt =СоздатьОбъект("АссоциативныйВектор");
_nt.Add(0, "None");
_nt.Add(1, "Element");
_nt.Add(2, "Attribute");
_nt.Add(3, "Text");
_nt.Add(4, "CDATA");
_nt.Add("");
_nt.Add("");
_nt.Add(7, "ProcessingInstruction");
_nt.Add(8, "Comment");
_nt.Add("");
_nt.Add(10, "DocumentType");
_nt.Add("");
_nt.Add("");
_nt.Add(13, "Whitespace");
_nt.Add("");
_nt.Add(15, "EndElement");
_nt.Add("");
_nt.Add(17, "XmlDeclaration");
_rr =СоздатьОбъект("1cpp.XmlLiteReader");
Если ТипЗначенияСтр(__источник) ="BinaryData" Тогда
_rr.SetInput(__источник);
Иначе
_bin =СоздатьОбъект("BinaryData");
_bin.ПодключитьсяКФайлу(__источник, 0, 1);
_rr.SetInput(_bin);
_bin.Закрыть();
КонецЕсли;
_т =СоздатьОбъект("ИндексированнаяТаблица");
_т.НоваяКолонка("__Уровень");
_т.НоваяКолонка("__Тип");
_т.НоваяКолонка("__Имя");
_т.НоваяКолонка("__Значение");
_type =_nt.None;
Пока _rr.Read(_type) =0 Цикл
Если _type =_nt.WhiteSpace Тогда
Продолжить;
КонецЕсли;
_т.НоваяСтрока();
_т.__Уровень =_rr.GetDepth();
_т.__Тип =_nt.GetKey(_type);
_т.__Имя =_rr.GetLocalName();
_т.__Значение =_rr.GetValue();
Если _rr.MoveToFirstAttribute() =0 Тогда
_ДобавитьАтрибут(_rr, _т);
КонецЕсли;
Пока _rr.MoveToNextAttribute() =0 Цикл
_ДобавитьАтрибут(_rr, _т);
КонецЦикла;
КонецЦикла;
_rr.Release();
_т.Выгрузить(_тз);
КонецПроцедуры