|
Сериализация СпискаЗначений В XDTO. Где я не прав? | ☑ | ||
---|---|---|---|---|
0
H A D G E H O G s
17.09.11
✎
08:31
|
День добрый.
Вот есть такой код: //Запись XDTO Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO); МойСписокЗначений=Новый СписокЗначений; МойСписокЗначений.Добавить("Мало мыла раму мама"); ОбъектXDTO = Сериализатор.ЗаписатьXDTO(МойСписокЗначений); ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл("C:\games\new.xml"); ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO); ЗаписьXML.Закрыть(); //Чтение XDTO ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл("C:\games\new.xml"); ОбъектXDTO=ФабрикаXDTO.ПрочитатьXML(ЧтениеXML); ОбъектXDTO.Проверить(); Сериализатор=Новый СериализаторXDTO(ФабрикаXDTO); МойСписокЗначений=Сериализатор.ПрочитатьXDTO(ОбъектXDTO); Запись в файл работает, на этапе чтения на строчке МойСписокЗначений=Сериализатор.ПрочитатьXDTO(ОбъектXDTO); вываливается с ошибкой: по причине: Ошибка преобразования данных XDTO: НачалоСвойства: {http://www.w3.org/2001/XMLSchema}anyType Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType по причине: Ошибка преобразования данных XDTO: НачалоСвойства: {http://v8.1c.ru/8.1/data/core}valueType Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType Содержимое файла: <ValueListType xmlns="http://v8.1c.ru/8.1/data/core" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <valueType/> <item> <value xsi:type="xs:string">Мало мыла раму мама</value> <id>0</id> </item> <lastId>0</lastId> </ValueListType> |
|||
1
H A D G E H O G s
17.09.11
✎
09:06
|
Ага, вот так заработала
Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO); МойСписокЗначений=Новый СписокЗначений; МойСписокЗначений.Добавить("Мало мыла раму мама"); ОбъектXDTO = Сериализатор.ЗаписатьXDTO(МойСписокЗначений); ТипОбъектаXDTO=ОбъектXDTO.Тип(); ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл("C:\games\new.xml"); ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO); ЗаписьXML.Закрыть(); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл("C:\games\new.xml"); ОбъектXDTO=ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,ТипОбъектаXDTO); ОбъектXDTO.Проверить(); Сериализатор=Новый СериализаторXDTO(ФабрикаXDTO); МойСписокЗначений2=Сериализатор.ПрочитатьXDTO(ОбъектXDTO); |
|||
2
H A D G E H O G s
17.09.11
✎
09:07
|
Тоесть в
ОбъектXDTO=ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,ТипОбъектаXDTO); надо жестко задавать тип. Только вот как получить ТипОбъектаXDTO без самого ОбъектаXDTO ???? |
|||
3
H A D G E H O G s
17.09.11
✎
09:12
|
Все, понял
по пространству имен и имени типа из фабрики ТипОбъектаXDTO=ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core","ValueListType"); |
|||
4
H A D G E H O G s
17.09.11
✎
09:12
|
Итоговый код:
Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO); МойСписокЗначений=Новый СписокЗначений; МойСписокЗначений.Добавить("Мало мыла раму мама"); ОбъектXDTO = Сериализатор.ЗаписатьXDTO(МойСписокЗначений); ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл("C:\games\new.xml"); ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO); ЗаписьXML.Закрыть(); ЧтениеXML = Новый ЧтениеXML; ТипОбъектаXDTO=ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core","ValueListType"); ЧтениеXML.ОткрытьФайл("C:\games\new.xml"); ОбъектXDTO=ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,ТипОбъектаXDTO); ОбъектXDTO.Проверить(); Сериализатор=Новый СериализаторXDTO(ФабрикаXDTO); МойСписокЗначений2=Сериализатор.ПрочитатьXDTO(ОбъектXDTO); |
|||
5
H A D G E H O G s
17.09.11
✎
09:13
|
Всем большое спасибо за помощь.
Вы даже не представляете, насколько этот код важен. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |