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