Имя: Пароль:
1C
1С v8
Новый ЧтениеXML, как узнать родителя элемента ?
0 zladenuw
 
20.08.12
13:37
Перебираю хмл

   Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(ПутьКФайлу);
Родитель  = "";
Пока Чтение.Прочитать() Цикл

   // Прочитать "структурные части" элементов.  
   // Проверить, какая часть элемента - текущая.  
   Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
       ИмяУзла = Чтение.Имя; //Сообщить("--" + ИмяУзла);

       Если Чтение.КонтекстПространствИмен.Глубина > 1 Тогда
          СтрокаДЗ = ДЗ.Строки.Найти(Родитель,"Объект");
          СтрокаДЗ = СтрокаДЗ.Строки.Добавить();
          СтрокаДЗ.Объект = ИмяУзла;
       иначе    
          СтрокаДЗ = ДЗ.Строки.Добавить();
          СтрокаДЗ.Объект = ИмяУзла;
          Родитель =  ИмяУзла;
       КонецЕсли;
Как мне расположить структуру хмл в виде дерева.
Как узнать в какою строку добавлять по уровню.
1 zladenuw
 
20.08.12
13:43
разобрался

Пока Чтение.Прочитать() Цикл

   // Прочитать "структурные части" элементов.  
   // Проверить, какая часть элемента - текущая.  
   Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
       ИмяУзла = Чтение.Имя; //Сообщить("--" + ИмяУзла);
       Глубина = Чтение.КонтекстПространствИмен.Глубина;
       Если Глубина > 1 Тогда
          СтрокаДЗ = ДЗ.Строки.Найти(Глубина-1,"Глубина",Истина);
          СтрокаДЗ = СтрокаДЗ.Строки.Добавить();
          СтрокаДЗ.Объект = ИмяУзла;
          СтрокаДЗ.Глубина = Глубина;
       иначе    
          СтрокаДЗ = ДЗ.Строки.Добавить();
          СтрокаДЗ.Объект = ИмяУзла;
          СтрокаДЗ.Глубина = Глубина;
          Родитель =  ИмяУзла;
       КонецЕсли;
2 Fragster
 
гуру
20.08.12
13:52
а ведь через XDTO такого геморроя нет..
3 zladenuw
 
20.08.12
16:16
а какой должен быть структуры файл что бы прочитать ХДТО ?
4 andrewks
 
20.08.12
16:17
можно читать хмл в построитель ДОМ
5 zladenuw
 
20.08.12
16:27
Книга знаний: v8: Пример чтения XML через XML DOM.
нашел вот это.
Но получилось и вот так

Чтение = Новый ЧтениеXML;
   Чтение.ОткрытьФайл(ПутьКФайлу);
   
   ФабрикаXDTOЛ = Новый ФабрикаXDTO;
   Чтение.ПерейтиКСодержимому();
   Чтение.Прочитать();
   НовыйОбъект = ФабрикаXDTOЛ.ПрочитатьXML(Чтение);