Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Дополнительно вычитать из XML дополнительную информацию в дерево...

Дополнительно вычитать из XML дополнительную информацию в дерево...
Я
   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, а вместе с ней и всю обработку? (
 
 
   SkillUp
 
1 - 25.09.18 - 08:46
В примере только нужная часть кода, сам XML очень большой )
   d4rkmesa
 
2 - 25.09.18 - 08:49
(0) Структуру или соответствие пиши в дерево в "Значение".
   SkillUp
 
3 - 25.09.18 - 08:52
(2) О! Точно...
   SkillUp
 
4 - 25.09.18 - 08:53
(2) А есть примеры?
   SkillUp
 
5 - 25.09.18 - 08:55
Все, нашел...
   d4rkmesa
 
6 - 25.09.18 - 09:13
(5) Пример есть в типовом обмене через ЭДО. Правда, там используется XDTO.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует