Имя: Пароль:
1C
 
Как преобразовать строку (ответ от веб сервиса) в формат xml ?
0 Radion
 
13.10.15
18:09
ВебСервис= WSСсылки.WSСсылка_PonyExpress.СоздатьWSПрокси("http://tempuri.org/","UI_WebService","BasicHttpBinding_IUI_Service";);
Значение = ВебСервис.SubmitRequest(ПарольДоступа,ДанныеXML);
ЧтениеXML = Новый ЧтениеXML();
ЧтениеXML.УстановитьСтроку(Значение);
Если ВозможностьЧтенияXML(ЧтениеXML) Тогда
Данные = ПрочитатьXML(ЧтениеXML);     
Данные.Записать();
КонецЕсли;     
Но чет возможности чтения нет (
1 Radion
 
13.10.15
18:16
ВозможностьЧтенияXML(ЧтениеXML) = ЛОЖЬ
2 Apokalipsec
 
13.10.15
18:16
Так тебе записьXML нужна, тебе в ответ обычная строка прилетает если, а не XMLка, и ты эту строку собираешься в XML писать
3 Radion
 
13.10.15
18:24
(1) точно сорри, все делаю для того чтобы прочитать ответ, через объект XDTO.
т.е. вместо:
Данные = ПрочитатьXML(ЧтениеXML);    
Данные.Записать();
будет строка:
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
4 Горогуля
 
13.10.15
18:26
и сразу появится ВозможностьЧтенияXML, ага
5 Radion
 
13.10.15
18:29
(4) предварительно записывать файл, а потом его читать  как то не айс (((
6 Radion
 
13.10.15
19:34
1С (8.2.19.106) не может прочитать ответ от веб сервиса
подобная ситуация. Может кто решил или подскажет? Спасибо.
7 D_Pavel
 
13.10.15
20:08
А что находится в строке "Значение"? Там не XML ведь?
8 Radion
 
13.10.15
22:16
(7) нет. веб сервис возвращает строку со структурой xml файла
9 Записьдампа
 
13.10.15
22:47
(0) Строку-то возвращаемую покажи. Есть подозрение, что тебя спасет

ЧтениеXML.ПерейтиКСодержимому();
10 Записьдампа
 
13.10.15
22:49
И может быть ты пытаешься читать тип, про который ФабрикаXDTO вообще не в курсе.
Или надо использовать фабрику сервиса...
11 EvgeniuXP
 
13.10.15
23:41
на курсы - мобильные приложения - проложите дорогу...
13 Radion
 
14.10.15
12:22
(9) веб сервис возвращает, вот такую строку:
<?xml version="1.0" encoding="utf-8"?>
<Response xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">;  
<OrderList>
    <Order>
      <ClientsNumber>G1161284</ClientsNumber>      
      <ServiceList />
      <StatusList />
      <ConsolidationList />
      <ExternalDataList />
    </Order>
  </OrderList>
  <MessageList>
    <ResponceMessage>
      <IsError>false</IsError>
      <Text>Order orderIdentifier G1161284 not found! The order has been skipped.</Text>
    </ResponceMessage>
  </MessageList>
</Response>
14 Radion
 
14.10.15
12:26
(10) я хочу, реализовать следующее:
ОтветВебСервиса=ВебСервис.SubmitRequest(ПарольДоступа,ДанныеXML);
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(ОтветВебСервиса);
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(Чтение);                
ОбъектXDTO_OrderHeader= ОбъектXDTO.OrderHeader;
Чтобы с помощью ОбъектXDTO, обращаться к атрибутам файла через точку, а не читать xml файл в цикле.
Спасибо.
15 Записьдампа
 
14.10.15
21:44
(14) Не могу воспрепятствовать:
    ОтветВебСервиса =
        "<?xml version=""1.0"" encoding=""utf-8""?>
        |<Response xmlns:xsd=""http://www.w3.org/2001/XMLSchema""; xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">;
        |<OrderList>
        |    <Order>
        |      <ClientsNumber>G1161284</ClientsNumber>
        |      <ServiceList />
        |      <StatusList />
        |      <ConsolidationList />
        |      <ExternalDataList />
        |    </Order>
        |  </OrderList>
        |  <MessageList>
        |    <ResponceMessage>
        |      <IsError>false</IsError>
        |      <Text>Order orderIdentifier G1161284 not found! The order has been skipped.</Text>
        |    </ResponceMessage>
        |  </MessageList>
        |</Response>";
        
    Чтение = Новый ЧтениеXML;
    Чтение.УстановитьСтроку(ОтветВебСервиса);
    Чтение.ПерейтиКСодержимому();
    
    Данные = ФабрикаXDTO.ПрочитатьXML(Чтение);


Для точной типизации внутренних данных нужна схема. Возможно эти данные описаны в фабрике веб-сервиса, посмотри, что у тебя ВебСервис.ФабрикаXTDO описывает.

А про ВозможностьЧтенияXML забудь, оно начнет работать, если у тебя будут известны фабрика, пространство имен и имя типа. Уверен, что ты про них ничего не расскажешь.
16 Radion
 
16.10.15
11:48
(15) Спасибо Большое! )
17 Radion
 
16.10.15
11:55
(15) сорри, а как тогда получается, что к примеру у меня есть сторонние файлы xml, и я их могу сериализовать через XDTO ? Я также не знаю ни схему, ни пространство имен ни типов? Просто три строки, работает:
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(Путь/+Файл);
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(Чтение);
Спасибо.
18 Serginio1
 
16.10.15
12:14
(17) Они читаются как AnyType и все значения строковые
19 Serginio1
 
16.10.15
12:15
18+ Кроме того списки с 1 элементом будут как элемент, а не список