Имя: Пароль:
1C
 
Чтение XML файла.
0 antihacker
 
29.03.16
13:58
Всем привет !

Вот файл

<?xml version="1.0" encoding="utf-8"?>
<EVENTSLIST DCSNAME="kyzmo0077d">
  <EVENT>
    <dEvent_Date>03.03.2016 12:03:09</dEvent_Date>
    <iUserNum>1864</iUserNum>
    <tDescReader>1\Панель 1\Турникет1\Выход</tDescReader>
    <dEvent_Date>03.03.2016 12:03:09</dEvent_Date>
    <iReader>2</iReader>
  </EVENT>
  <EVENT>
    <dEvent_Date>03.03.2016 12:03:48</dEvent_Date>
    <iUserNum>2260</iUserNum>
    <tDescReader>1\Панель 1\Турникет1\Выход</tDescReader>
    <dEvent_Date>03.03.2016 12:03:48</dEvent_Date>
    <iReader>2</iReader>
  </EVENT>
  <EVENT>
    <dEvent_Date>03.03.2016 12:03:56</dEvent_Date>
    <iUserNum>1502</iUserNum>
    <tDescReader>1\Панель 1\Турникет1\Выход</tDescReader>
    <dEvent_Date>03.03.2016 12:03:56</dEvent_Date>
    <iReader>2</iReader>
  </EVENT>
  <EVENT>

Читаю так

        ПОКА ЧтениеXMl.Прочитать() ЦИКЛ
    
        //***********Общие реквизиты***************************    
        Если ЧтениеXMl.ТипУзла = ТипУзлаXML.НачалоЭлемента  Тогда

            Если ЧтениеXMl.Имя="EVENTSLIST" Тогда
            ИмяССД = СокрЛП(ЧтениеXMl.ПолучитьАтрибут("DCSNAME"));
            сообщить(ИмяССД);
            //КОнецЕсли;
        

            КонецЕсли;
        
                   Если ЧтениеXMl.Имя="EVENT" Тогда

                    //Если ЧтениеXMl.Имя="EVENT" Тогда
                
                    сообщить(СокрЛП(ЧтениеXMl.ПолучитьАтрибут("iUserNum")));
                
                КонецЕсли;

        КонецЕсли;        
        КОНЕЦЦИКЛА;

Значение DCSNAME выдает, а  значение iUserNum нет. Что не так ?
1 lxs
 
29.03.16
14:00
Потому что iUserNum не атрибут
2 antihacker
 
29.03.16
14:02
А как его читать ?
3 mehfk
 
29.03.16
14:04
Как элемент.
4 lxs
 
29.03.16
14:05
(2) Если ЧтениеXMl.Имя=
5 lxs
 
29.03.16
14:06
Вернее нет, там надо текст получить
6 Fragster
 
гуру
29.03.16
14:09
я бы сделал схему и двумя строками запихал в объект XDTO. кстати, дата в XML из (0) не по стандарту.
7 Fragster
 
гуру
29.03.16
14:10
8 antihacker
 
29.03.16
14:15
lxs получить текст пробовал

        ПОКА ЧтениеXMl.Прочитать() ЦИКЛ
    
        //***********Общие реквизиты***************************    
        Если ЧтениеXMl.ТипУзла = ТипУзлаXML.НачалоЭлемента  Тогда

            Если ЧтениеXMl.Имя="EVENTSLIST" Тогда
            ИмяССД = СокрЛП(ЧтениеXMl.ПолучитьАтрибут("DCSNAME"));
            сообщить(ИмяССД);
            //КОнецЕсли;
            КонецЕсли;


                   
        ИначеЕсли ЧтениеXMl.ТипУзла=ТипУзлаXMl.Текст Тогда

            
            Если ЧтениеXMl.Имя="EVENT\iUserNum" Тогда

                    //Если ЧтениеXMl.Имя="EVENT" Тогда
                
                    сообщить(СокрЛП(ЧтениеXMl.Значение));
            КонецЕсли;    

        КонецЕсли;        
        КОНЕЦЦИКЛА;


Ведет себя как будто не бегает по циклу или

    ИначеЕсли ЧтениеXMl.ТипУзла=ТипУзлаXMl.Текст Тогда

Не выполлняеться
9 lxs
 
29.03.16
14:16
(6) Если ЧтениеXMl.Имя="iUserNum" Тогда
10 antihacker
 
29.03.16
14:20
Не работает ска
11 antihacker
 
29.03.16
14:36
Ауууууу
12 antihacker
 
29.03.16
14:50
Вот так читаю

        ПОКА ЧтениеXMl.Прочитать() ЦИКЛ
    
        //***********Общие реквизиты***************************    
        Если ЧтениеXMl.ТипУзла = ТипУзлаXML.НачалоЭлемента  Тогда

            СтекУзлов.Добавить(ЧтениеXMl.Имя);
            //ТекущийПуть = МассивСтрок (СтекУзлов);
            Если ЧтениеXMl.Имя="EVENTSLIST" Тогда
            ИмяССД = СокрЛП(ЧтениеXMl.ПолучитьАтрибут("DCSNAME"));
            сообщить(ИмяССД);
            //КОнецЕсли;
            КонецЕсли;


                   
         Если ЧтениеXMl.Имя="EVENT" Тогда
            сообщить(ЧтениеXMl.ПолучитьАтрибут("dEvent_Date"));
            сообщить(ЧтениеXMl.ПолучитьАтрибут("iUserNum"));
            сообщить(ЧтениеXMl.ПолучитьАтрибут("tDescReader"));
            сообщить(ЧтениеXMl.ПолучитьАтрибут("iReader"));                            
            КонецЕсли;
        КонецЕсли;        
        КОНЕЦЦИКЛА;


А файл вот так

<?xml version="1.0" encoding="utf-8"?>
<EVENTSLIST DCSNAME="kyzmo0077d">
  <EVENT dEvent_Date="03.03.2016 12:03:09" iUserNum="1864" tDescReader="1\Панель 1\Турникет1\Выход" iReader="2" />
  <EVENT dEvent_Date="03.03.2016 12:03:48" iUserNum="2260" tDescReader="1\Панель 1\Турникет1\Выход" iReader="2" />
  <EVENT dEvent_Date="03.03.2016 12:03:56" iUserNum="1502" tDescReader="1\Панель 1\Турникет1\Выход" iReader="2" />
  <EVENT dEvent_Date="03.03.2016 12:04:21" iUserNum="2283" tDescReader="1\Панель 2\Турникет2 \Выход" iReader="4" />
  <EVENT dEvent_Date="03.03.2016 12:04:23" iUserNum="775" tDescReader="1\Панель 1\Турникет 1\Вход" iReader="1" />
  <EVENT dEvent_Date="03.03.2016 12:04:35" iUserNum="2282" tDescReader="1\Панель 2\Турникет2 \Выход" iReader="4" />
13 Ёпрст
 
29.03.16
14:53
(12) а откуда этот файлик взялся, если в (0) - совсем другой ?
14 antihacker
 
29.03.16
15:03
Я сам же его и создаю ))
15 igork1966
 
29.03.16
15:05
мда, миста как сервер отладки со встроенным СП
16 lxs
 
29.03.16
15:28
(14) Если у тебя структура каждый раз меняется, то под каждую новую надо переписывать твой парсер.
17 antihacker
 
30.03.16
05:58
Почему каждый раз ? Нету такой необходимости.
18 mehfk
 
30.03.16
08:19
(0) Делай так:
СтрXML = "<?xml version=""1.0"" encoding=""utf-8""?>
|<EVENTSLIST DCSNAME=""kyzmo0077d"">
|  <EVENT>
|    <dEvent_Date>03.03.2016 12:03:09</dEvent_Date>
|    <iUserNum>1864</iUserNum>
|    <tDescReader>1\Панель 1\Турникет1\Выход</tDescReader>
|    <dEvent_Date>03.03.2016 12:03:09</dEvent_Date>
|    <iReader>2</iReader>
|  </EVENT>
|  <EVENT>
|    <dEvent_Date>03.03.2016 12:03:48</dEvent_Date>
|    <iUserNum>2260</iUserNum>
|    <tDescReader>1\Панель 1\Турникет1\Выход</tDescReader>
|    <dEvent_Date>03.03.2016 12:03:48</dEvent_Date>
|    <iReader>2</iReader>
|  </EVENT>
|  <EVENT>
|    <dEvent_Date>03.03.2016 12:03:56</dEvent_Date>
|    <iUserNum>1502</iUserNum>
|    <tDescReader>1\Панель 1\Турникет1\Выход</tDescReader>
|    <dEvent_Date>03.03.2016 12:03:56</dEvent_Date>
|    <iReader>2</iReader>
|  </EVENT>
|</EVENTSLIST>";
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(СтрXML);
EventList = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.