0
SkillUp
25.09.18
✎
08:45
|
Есть XML, который перевожу в дерево.
XML:
<category id="17" parentId="9">Аксессуары для устройств контроля доступа</category>
<category id="11" parentId="10">Электромеханические замки</category>
<category id="12" parentId="10">Электромагнитные замки</category>
"category id" - получаю, но мне надо и "parentId".
Пользуюсь кодом:
Функция ЧтениеXMLВДерево(Путь)
Дерево = Новый ДеревоЗначений;
Дерево.Колонки.Добавить("Имя");
Дерево.Колонки.Добавить("Значение");
XMLФайл = Новый ЧтениеXML;
XMLФайл.ОткрытьФайл(Путь);
ПрочитатьXMLПоТегам(XMLФайл, Дерево.Строки);
XMLФайл.Закрыть();
Возврат Дерево;
КонецФункции
Процедура ПрочитатьXMLПоТегам(XMLФайл, ТекущийНаборСтрок)
Пока XMLФайл.Прочитать() Цикл
Если XMLФайл.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
НоваяСтрока = ТекущийНаборСтрок.Добавить();
НоваяСтрока.Имя = XMLФайл.Имя;
НоваяСтрока.Значение = "";
Пока XMLФайл.ПрочитатьАтрибут() Цикл
НоваяСтрокаАтрибут = НоваяСтрока.Строки.Добавить();
НоваяСтрокаАтрибут.Имя = XMLФайл.Имя;
НоваяСтрокаАтрибут.Значение = СокрЛП(XMLФайл.Значение);
КонецЦикла;
ПрочитатьXMLПоТегам(XMLФайл, НоваяСтрока.Строки);
ИначеЕсли XMLФайл.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
Возврат;
ИначеЕсли XMLФайл.ТипУзла = ТипУзлаXML.Текст Тогда
ТекущийНаборСтрок.Родитель.Значение = СокрЛП(XMLФайл.Значение);
Иначе
Сообщить("Тип узла: " + XMLФайл.ТипУзла + " НЕ ОБРАБОТАН", СтатусСообщения.Важное);
Конецесли;
КонецЦикла;
КонецПроцедуры
Как в дерево теперь добавить "parentId"? Фиг его знает ,если кто-то подскажет пути решения или пример, голову ломаю, не знаю как решить? Неужели переписывать полностью обход XML, а вместе с ней и всю обработку? (
|
|