8.х Помогите с xml((( не получается!

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем ЕкатеринаНик, 23 окт 2012.

  1. TopicStarter Overlay
    ЕкатеринаНик
    Offline

    ЕкатеринаНик Опытный в 1С

    Регистрация:
    8 ноя 2010
    Сообщения:
    698
    Симпатии:
    1
    Баллы:
    29
    Надо прочитать файлик...

    Код:
    Файл = Новый ЧтениеXML;
    Файл.ОткрытьФайл(ВыбФайл);
    // Прочитать фрагменты элемента 
    Пока Файл.Прочитать() Цикл
    // После чтения проверить тип узла 
    Если Файл.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
    Сообщить(Файл.Имя);
    // Прочитать атрибуты
    Пока Файл.ПрочитатьАтрибут() Цикл
    Сообщить("атрибут:" + Файл.Имя + "=" + Файл.Значение); 
    КонецЦикла;
    КонецЕсли;
    Если Файл.ТипУзла = ТипУзлаXML.Текст Тогда
    Сообщить(Файл.Значение); 
    КонецЕсли;
    Если Файл.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда 
    Сообщить("/" + Файл.Имя);
    КонецЕсли; 
    КонецЦикла; 
    Файл.Закрыть();

    Отвечает так:


    main
    Тип_сообщения
    NI
    /Тип_сообщения
    Версия_Формата
    1.0
    /Версия_Формата
    Общее_число_записей
    1
    /Общее_число_записей
    Код_Организации
    115xxx
    /Код_Организации
    Наименование_организации
    ЗАО "Кxxxxxмаш"
    /Наименование_организации
    Записи
    Запись_1
    Фамилия
    АxxxxК
    /Фамилия
    Имя
    xxxxx
    /Имя
    Отчество
    xxxxxx
    /Отчество
    /Запись_1
    /Записи
    /main
    А как получить разом ФИО? Т.е. в данный момент чтобы получить три нужных значения, 30 раз уходит в начало цикла Файл.Прочитать() чтото как сделать, вообще не пойму, с xml столкнулась впервые.

    Вложения:

    • 1.xml
      Размер файла:
      388 байт
      Просмотров:
      40
  2. TopicStarter Overlay
    ЕкатеринаНик
    Offline

    ЕкатеринаНик Опытный в 1С

    Регистрация:
    8 ноя 2010
    Сообщения:
    698
    Симпатии:
    1
    Баллы:
    29
    Файл.Имя = "Фамилия", а Файл.Значение = ""
    потом через цикл Файл.Имя = "#text", а Файл.Значение = АхххххК,
    еще цикл Файл.Имя = "Имя", а Файл.Значение = ""
    потом через цикл Файл.Имя = "#text", а Файл.Значение = ХХХХХ,

    еще цикл Файл.Имя = "Отчество", а Файл.Значение = ""
    потом через цикл Файл.Имя = "#text", а Файл.Значение = ХХХХХХХХХХ.
  3. TopicStarter Overlay
    ЕкатеринаНик
    Offline

    ЕкатеринаНик Опытный в 1С

    Регистрация:
    8 ноя 2010
    Сообщения:
    698
    Симпатии:
    1
    Баллы:
    29
    ну... как то вот так выкрутилась..... вообще xml не впечатлил...
    Код:
     Файл = Новый ЧтениеXML;
    Файл.ОткрытьФайл(ВыбФайл);
    
    Пока Файл.Прочитать() Цикл
    Если Файл.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
    Если Файл.Имя = "Записи" Тогда
    Пока Файл.Прочитать() Цикл
    Если Файл.Имя = "Фамилия" И Файл.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
    ФИД	    = Файл.ПолучитьАтрибут("Фамилия");
    Файл.Прочитать();
    ФТХТ    = Файл.Значение;
    Сообщить(ФТХТ);		 
    КонецЕсли;
    Если Файл.Имя = "Имя" И Файл.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
    ИИД	    = Файл.ПолучитьАтрибут("Имя");
    Файл.Прочитать();
    ИТХТ    = Файл.Значение;
    Сообщить(ИТХТ);		 
    КонецЕсли;
    Если Файл.Имя = "Отчество" И Файл.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
    ОИД	    = Файл.ПолучитьАтрибут("Отчество");
    Файл.Прочитать();
    ОТХТ    = Файл.Значение;
    Сообщить(ОТХТ);		 
    КонецЕсли;
    КонецЦикла;
    
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    
  4. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Ну или например так:
    Код:
    Функция ПолучитьЭлементXML(Узел, ИмяЭлемента)
    Результат = Узел.ПолучитьЭлементыПоИмени(ИмяЭлемента);
    Если Результат.Количество() = 1 Тогда
    Возврат Результат[0];
    Иначе
    Возврат Неопределено;
    КонецЕсли;
    КонецФункции
    
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    Файл = Новый ЧтениеXML;
    Файл.ОткрытьФайл(ВыбФайл);
    
    ПостроительDOM = Новый ПостроительDOM;
    ДокументDOM = ПостроительDOM.Прочитать(Файл);
    
    //Корневой узел документа
    ЭлементMAIN = ПолучитьЭлементXML(ДокументDOM, "main");
    Если ЭлементMAIN <> Неопределено Тогда
    
    ЭлементКодОрганизации = ПолучитьЭлементXML(ЭлементMAIN, "Код_Организации");
    Сообщить("Код организации:" + ЭлементКодОрганизации.ТекстовоеСодержимое);
    
    ЭлементНаименованиеОрганизации = ПолучитьЭлементXML(ЭлементMAIN, "Наименование_организации");
    Сообщить("Наименование организации:" + ЭлементНаименованиеОрганизации.ТекстовоеСодержимое);
    
    ЭлементЗАПИСИ = ПолучитьЭлементXML(ЭлементMAIN, "Записи");
    Если ЭлементЗАПИСИ <> Неопределено Тогда
    //Цикл по дочерним узлам тэга <Записи> (т.е. <Запись_1>, <Запись_2>, <Запись_3> и т.д.)
    Для Каждого Запись Из ЭлементЗАПИСИ.ДочерниеУзлы Цикл
    Фамилия = ПолучитьЭлементXML(Запись, "Фамилия").ТекстовоеСодержимое;
    Имя  = ПолучитьЭлементXML(Запись, "Имя").ТекстовоеСодержимое;
    Отчество= ПолучитьЭлементXML(Запись, "Отчество").ТекстовоеСодержимое;
    Сообщить("" + Фамилия + " " + Имя + " " + Отчество);
    КонецЦикла;
    КонецЕсли;
    КонецЕсли;
    
    Файл.Закрыть();
    
    КонецПроцедуры
    
  5. TopicStarter Overlay
    ЕкатеринаНик
    Offline

    ЕкатеринаНик Опытный в 1С

    Регистрация:
    8 ноя 2010
    Сообщения:
    698
    Симпатии:
    1
    Баллы:
    29

Поделиться этой страницей