Имя: Пароль:
1C
 
Получить значения параметров xml (XDTO)....
0 warkan
 
13.07.17
09:59
Всем добра.
Есть такой вот ответ от сервиса:
<?xml version="1.0" encoding="windows-1251" ?>
- <reply>
  <type>users</type>
- <users>
- <user id="1505">
  <group>1</group>
  <full_name>Абдуллаева Ирина Николаевна</full_name>
  <family>Абдуллаева</family>
  <name>Ирина</name>
  <fname>Николаевна</fname>
- <params>
  <param id="acl">4</param>
  <param id="acl_name">Всегда</param>
  <param id="activate">10.07.2017</param>
  <param id="deactivate">10.07.2020</param>
  <param id="apb_check">1</param>
  <param id="position">обработчик птицы</param>
  <param id="pos_code">59</param>
  <param id="dept_id">10</param>
  <param id="dept_name">Птицеубойный цех</param>
  <param id="ta_attr">0</param>
  <param id="sg_id">13</param>
  <param id="sg_name">Птицеубойный</param>
  <param id="sch_id">1</param>
  <param id="sch_name">Стандартное</param>
  </params>
  </user>


Делаю вот такое:
    ЧтениеХМЛ = Новый ЧтениеXML;
    ЧтениеХМЛ.ОткрытьФайл("C:\Temp\_users.xml");
    
    РезРазборки = Новый Массив;
    ПодрХДТО = ФабрикаXDTO.ПрочитатьXML(ЧтениеХМЛ);
    
    Если ТипЗнч(ПодрХДТО.users.user) <> Тип("СписокXDTO") Тогда
        спСотрХДТО = Новый Массив;
        спСотрХДТО.Добавить(ПодрХДТО.users.user);
    Иначе    
        спСотрХДТО = ПодрХДТО.users.user
    КонецЕсли;
    
    
    тс = 0;
    Для тс = 0 По спСотрХДТО.Количество()-1 Цикл
        
        текСотрХДТО = спСотрХДТО.Получить(тс);
        
        нсТабСотр = табСотр.Добавить();
        нсТабСотр.Код             = текСотрХДТО.id;
        нсТабСотр.Наименование = текСотрХДТО.full_name;
        нсТабСотр.Фамилия        = текСотрХДТО.family;
        нсТабСотр.Имя            = текСотрХДТО.name;
        нсТабСотр.Отчество       = текСотрХДТО.fname;
        
        

А как мне далее из params.param получить значения разных .... полей(?) "id"?
Можно натыкать носом в мануал по работе с "ФабрикаXDTO"... :(

Большое спасибо.
1 warkan
 
13.07.17
11:19
После ФабрикиXDTO, в СпискеXDTO, получаемого из элемента "params.param" доступны только значения атрибута "id" элемента/элементов "params.param" (acl, acl_name, activate,...). А хочется получить значения самих элементов "param" (4, Всегда, 10.07.2017,...).
Как это сделать? Почему Фабрика не отбирает эти значения?
Или нужен другой программный код?
Или нужно "скармливать" Фабрике схему xml-документа (.xms)?
2 warkan
 
13.07.17
11:20
Поправка - схема - .xsd
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший