Имя: Пароль:
1C
1C 7.7
v7: Загрузка значений из XML
0 Маркусс
 
07.07.16
11:50
Добрый день

Считываю файл XML. Пока не начинаю считывать значения объектов в цикле нормально считываются теги.
Процедура Сформировать()
    
    ЗагрузитьКомпонентуV7plus();
    
    Файл = "D:\base\тест\ExtForms\1\сЗаявок.xml";
    
    гФайл =    гXMLАнализатор.СоздатьПоследовательноСчитываемыйДокумент();
    
    гФайл.СвязатьСФайлом(Файл);
    
    
    ТипТега = гФайл.Спуститься();

    СвойстваТекущегоУзла    =    гФайл.СвойстваТекущегоУзла;
    ИмяТега                    =    СвойстваТекущегоУзла.Имя;
    
    Пока ТипТега <> 4 Цикл        //    пока не достигнут конец файла
        
        Если ТипТега <> 1 Тогда    //    пропускаем концы уровней и инструкции     ВыбратьУзлы
            ТипТега = гФайл.Следующий();
            Продолжить;
        КонецЕсли;
        
        ИмяТега    =    гФайл.СвойстваТекущегоУзла.Имя;
            
        ТипТега = гФайл.Спуститься();
        Продолжить;
            
    КонецЦикла;
    

КонецПроцедуры

Если пытаюсь получить текущийЭлементВВидеОбъекта, то считывается только один элемент, затем метод Спуститься() перекидывает сразу на последнюю строку. Что делаю не так?

Процедура Сформировать()
    
    ЗагрузитьКомпонентуV7plus();
    
    Файл = "D:\base\тест\ExtForms\1\сЗаявок.xml";
    
    гФайл =    гXMLАнализатор.СоздатьПоследовательноСчитываемыйДокумент();
    
    гФайл.СвязатьСФайлом(Файл);
    
    
    ТипТега = гФайл.Спуститься();

    СвойстваТекущегоУзла    =    гФайл.СвойстваТекущегоУзла;
    ИмяТега                    =    СвойстваТекущегоУзла.Имя;
    
    Пока ТипТега <> 4 Цикл        //    пока не достигнут конец файла
        
        Если ТипТега <> 1 Тогда    //    пропускаем концы уровней и инструкции     ВыбратьУзлы
            ТипТега = гФайл.Следующий();
            Продолжить;
        КонецЕсли;
        
        ИмяТега    =    гФайл.СвойстваТекущегоУзла.Имя;
        
        Объект        = гФайл.ТекущийЭлементВВидеОбъекта();
        ИмяУзла        = Объект.Наименование;
        Значение    = Объект.Значение;
    
        ТипТега = гФайл.Спуститься();
        Продолжить;
            
    КонецЦикла;
    

КонецПроцедуры

Спасибо
1 Ёпрст
 
07.07.16
11:58
ну почитай про Спуститься в Сп что ле
2 Это_mike
 
07.07.16
12:02
(1) так это вроде из СП код?
3 Маркусс
 
07.07.16
12:03
(1) так почему метод Спуститься в первом случае перепрыгивает на следующий тэг, в во втором сразу на конец документа?
(2) да
4 Маркусс
 
07.07.16
12:13
Фиг с ним с методом. Вот есть файл XML произвольной структуры. Как считать все его значения?
5 Ёпрст
 
07.07.16
12:18
(4) через домлокумент проще всего.
6 Маркусс
 
07.07.16
12:44
Так понял метод ТекущийЭлементВВидеОбъекта() имеет смысл только для внутренних тегов. Если пытаться его выполнить во внешних, то весь ХМЛ преобразуется в непойми что и курсор позиционируется на конце файла.
Каким образом можно понять, что тег внутренний?