|
Преобразование XML через Фабрику XDTO. | ☑ | ||
---|---|---|---|---|
0
pmb
01.08.12
✎
16:32
|
Есть файл в формате XML c таким заголовком:
<?xml version="1.0" encoding="utf-8"?> <ArrayOfDetailItem xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/"> <DetailItem> <DetailInfo xsi:type="fDetailsSOAP_price"> Пытаюсь преобразовать его с помошью ФабрикиXDTO НаборСхемXML = ФабрикаXDTO.ЭкспортСхемыXML("http://tempuri.org/"); Фабрика_XDTO = Новый ФабрикаXDTO(НаборСхемXML); Фабрика_XDTO.ПрочитатьXML(ЧтениеXML); полчаю ошибки: {Форма.Форма.Форма(56)}: Ошибка при вызове метода контекста (ПрочитатьXML) Фабрика_XDTO.ПрочитатьXML(ЧтениеXML); по причине: Ошибка преобразования данных XDTO: Чтение объекта типа: {http://www.w3.org/2001/XMLSchema}anyType - [32,7] Проверка дополнительного свойства: форма: Элемент имя: {http://tempuri.org/}DetailItem по причине: Ошибка преобразования данных XDTO: Чтение объекта типа: {http://www.w3.org/2001/XMLSchema}anyType - [32,7] Проверка дополнительного свойства: форма: Элемент имя: {http://tempuri.org/}DetailInfo по причине: Ошибка преобразования данных XDTO: Чтение объекта типа: {http://www.w3.org/2001/XMLSchema}anyType - [43,32] Проверка дополнительного свойства: форма: Элемент имя: {http://tempuri.org/}Quantity по причине: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: {http://www.w3.org/2001/XMLSchema}anyType по причине: Несоответствие типов XDTO: Свойство не может содержать неопределенное значение Помогите как правильно прочитать такой файл XML? |
|||
1
Maxus43
01.08.12
✎
16:37
|
из какой базы хмл выгружен?
|
|||
2
mikecool
01.08.12
✎
16:38
|
(1) +1 нужна схема базы, из которой выгружено
|
|||
3
pmb
01.08.12
✎
16:40
|
(2) XML это получен через веб-сервис. Ессть описание этого веб-сервиса (WSDL) как из него можно вытащить схему?
|
|||
4
Maxus43
01.08.12
✎
16:43
|
собсно схему ищет там "http://www.w3.org...."
Если конфы идентичны - можно подсунуть "currentconfig", точный синтаксис не помню |
|||
5
pmb
01.08.12
✎
16:56
|
(4) это не выгрузка из одной базы в другую....
|
|||
6
Maxus43
01.08.12
✎
17:25
|
а что это? то что хочеш загрузить различается по структуре, грубо говоря XDTO не может преобразовать в свой объект то что в файле, они разные
|
|||
7
Asmody
01.08.12
✎
17:42
|
(3) по WSDL можно получить фабрику:
WSОпределение=Новый WSОпределение(ФайлWSDL); WSСервис=WSОпределение.Сервисы[0]; WSПрокси=Новый WSПрокси(WSОпределение, WSСервис.URIПространстваИмен, WSСервис.Имя, WSСервис.ТочкиПодключения[0].Имя); ФабрикаСервиса=WSПрокси.ФабрикаXDTO; |
|||
8
pmb
01.08.12
✎
17:53
|
(6) хочу загрузить файл, полученный от веб-сервиса. Есть описание веб-сервиса (WSDL), файл получаю с помощью объекта WinHttp.WinHttpRequest.5.1
решил почти как в (7), только немного проше (не знаю насколько правильно, но работает) WSОпределение = Новый WSОпределения(СсылкаНаОпписаниеСервиса); ЧтениеXML= Новый ЧтениеXML(); ЧтениеXML.УстановитьСтроку(ОтветСервера); ПакетXDTO = WSОпределение.ФабрикаXDTO.ПрочитатьXML(ЧтениеXML); |
|||
9
Asmody
01.08.12
✎
17:55
|
(8) а чего ты сразу через WS-ссылку не хочешь сделать?
|
|||
10
pmb
01.08.12
✎
17:56
|
(9) получить данные через WS-ссылку?
|
|||
11
Asmody
01.08.12
✎
17:59
|
(10) ну да. оно же позволяет прямо методы веб-сервиса вызывать
|
|||
12
pmb
01.08.12
✎
18:01
|
(11) периодически методы веб-сервиса выполняются очень долго и вызов метода заканчивается ошибкой.
У WinHttp.WinHttpRequest.5.1 есть возможность установки таймаута. Сейчас тестирую, вроде нормально работает ;) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |