![]() |
|
XDTO и корневые свойства пакетов | ☑ | ||
---|---|---|---|---|
0
HomoAlbus
03.11.15
✎
11:52
|
Добрый день, коллеги. Пишу данные в xml используя xsd схему, в ней есть такая штука:
... <xsd:complexType name="CategoriesRequest"> <xsd:sequence> <xsd:element name="categories"> <xsd:complexType> <xsd:sequence> <xsd:element name="category" type="tns:Category" minOccurs="1" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> ... <xsd:element name="categoriesRequest" type="tns:CategoriesRequest" /> Дальше работаю с XDTO как обычно: ПакетXDTO = СтруктураПараметров.ФабрикаXDTO.Пакеты.Получить(СтруктураПараметров.URI); ТипОбъектаRequest = СтруктураПараметров.ФабрикаXDTO.Тип(СтруктураПараметров.URI, ТипRequest); ОбъектRequest = СтруктураПараметров.ФабрикаXDTO.Создать(ТипОбъектаRequest); ТипСписка = ПакетXDTO.КорневыеСвойства.Получить(ТипRequest).Тип.Свойства.Получить(СтруктураПараметров.ИмяСвойстваСписка).Тип; ОбъектСписка = СтруктураПараметров.ФабрикаXDTO.Создать(ТипСписка); ОбъектRequest[СтруктураПараметров.ИмяСвойстваСписка] = ОбъектСписка; СформироватьСписокCategories(ОбъектRequest.categories.category, СтруктураПараметров); После чего пишем его в XML. Все чудесно, кроме одной проблемы - имя корневого элемента. Сейчас сериализатор пишет имя корневого элемента следующим образом: <CategoriesRequest бла-бла нэймспэйсы> Тогда как сервис требует, что бы имя корневого элемента было: как в element в схеме: <categoriesRequest бла-бла нэймспэйсы> Т.е. разница в регистре первого символа. Мне кажется, что я что-то делаю не так, но не пойму что. categoriesRequest в пакетах представлен как корневой элемент с типом СвойствоXDTO. Если получить тип по нему и снова записать объект с этим типом в XML, то имя корневного элемента также с заглавной буквы... Буду рад любой помощи, спасибо заранее. |
|||
1
Serginio1
03.11.15
✎
12:33
|
||||
2
Serginio1
03.11.15
✎
12:39
|
||||
3
HomoAlbus
03.11.15
✎
12:48
|
(2) Спасибо за ссылки, но нам не моя проблема, насколько я могу судить.
|
|||
4
Serginio1
03.11.15
✎
13:59
|
(3) Прошу прощения. Не разобрался.
По схеме есть КорневоеСвойство с типом CategoriesRequest. А записываться в файл будет имя типа |
|||
5
Serginio1
03.11.15
✎
14:04
|
Хотя http://erpsolution.ru/forum/showthread.php?t=876&page=2
Корневые объекты – перечень корневых объектов пакета XDTO. Представляет собой объявления объектов/значений, которые могут являться корневыми элементами документов XML, принадлежащих URI пространства имен данного пакета XDTO. |
|||
6
Serginio1
03.11.15
✎
14:05
|
ФабрикаXDTO (XDTOFactory)
ЗаписатьXML (WriteXML) Синтаксис: ЗаписатьXML(<ЗаписьXML>, <Элемент>, <ЛокальноеИмя>, <URIПространстваИмен>, <Форма>, <УказаниеТипа>) Параметры: <ЗаписьXML> (обязательный) Тип: ЗаписьУзловDOM, ЗаписьFastInfoset, ЗаписьXML. Объект записи XML. <Элемент> (обязательный) Тип: ЗначениеXDTO; ОбъектXDTO; Неопределено. Записываемое значение. <ЛокальноеИмя> (необязательный) Тип: Строка. Локальное имя записываемого элемента данных. <URIПространстваИмен> (необязательный) Тип: Строка. URI пространства имен записываемого элемента данных. <Форма> (необязательный) Тип: ФормаXML. Форма представления элемента данных в XDTO. Значение по умолчанию: Элемент. <УказаниеТипа> (необязательный) Тип: НазначениеТипаXML. Вариант назначения типа элемента данных XDTO. Значение по умолчанию: Неявное. Описание: Записывает указанный элемент данных XDTO в объект записи XML. |
|||
7
HomoAlbus
03.11.15
✎
14:37
|
(6) Аве Миста, Аве Serginio1 ! Кланяюсь в землю, все получилось! Огромное спасибо.
|
|||
8
Fragster
гуру
03.11.15
✎
14:44
|
а если в пакете у типа указать локальное имя?
|
|||
9
HomoAlbus
03.11.15
✎
15:53
|
(8) Схемой я не владею, получаю по WS. Как правильно отметил Serginio1 по дефолту имя объектаXDTO записываемого в XML = имени типа. Поэтому нужно заполнять третий параметр при записи. В общем все получилось и всем спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |