![]() |
|
ФабрикаXDTO.Прочитать() и тип свойств "открытых" объектов | ☑ | ||
---|---|---|---|---|
0
Fragster
гуру
03.06.16
✎
17:23
|
есть набор схем XML, есть XML.
В есть "открытый" тип, у которого могут быть произвольные свойства. Как сделать так, чтобы при чтении свойства такого объекта правильно типизировались? внутри XML что-то типа того: <Container xmlns="namespace"> <Element xmlns="namespace">... При этом в пакетах XDTO есть корневое свойство Element с указанным типом |
|||
1
CityZen
03.06.16
✎
22:22
|
Типизировать объекты и их свойства можно только используя схему.
Загружайте схему и указывайте ее перед чтением. |
|||
2
Fragster
гуру
03.06.16
✎
23:23
|
(1) спасибо, капитан.
|
|||
3
Fragster
гуру
03.06.16
✎
23:24
|
а теперь - есть схема. в ней есть открытый тип. его свойства идут как any type, как сделать, чтобы они были типизированы
|
|||
4
Fragster
гуру
06.06.16
✎
10:48
|
понедельничный ап
|
|||
5
DmitrO
06.06.16
✎
11:36
|
Для таких свойств, в данных XML документа должен быть указан атрибут xsi:type (xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance") со значением типа.
|
|||
6
Fragster
гуру
06.06.16
✎
11:38
|
(5) к сожалению, на источник XML повлиять не могу, очень сильно внешняя программа.
|
|||
7
Fragster
гуру
06.06.16
✎
11:40
|
можно наговнокодить, конечно. залить все в DOM, через XPATH получить все элементы корневых свойств, добавить им атрибут, записать в XML и прочитать в объект XDTO, но это попахивает извращением.
|
|||
8
DmitrO
06.06.16
✎
11:44
|
(7)ну почему извращением..
наверно другой способ, это читать XML с явным указанием типа, раз ты их знаешь |
|||
9
DmitrO
06.06.16
✎
11:44
|
читать элемент из файла имею в виду
|
|||
10
DmitrO
06.06.16
✎
11:48
|
А вообще, конечно, правила хорошего тона это для элементов типа AnyType всегда указывать xsi:type. И 1С кстати этому правилу следует в своих сериализациях.
|
|||
11
DmitrO
06.06.16
✎
11:56
|
(10)+ ибо anyType в XML без xsi:type, это как void* в C++, или как object в C# - форменное безобразие!
:) |
|||
12
Fragster
гуру
06.06.16
✎
13:04
|
(11) скажите это нашим госорганам
|
|||
13
Fragster
гуру
06.06.16
✎
13:05
|
дело все в том, что по имени элемента можно его найти в списке корневых свойств и оттуда определить тип. может быть есть кунгфу встроенное в платформу уже.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |