![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| jonie |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
Имеем: XSD схему (не нашу), например такую:
прогоняем ее через xsd.exe, получаем датасет... все счастливы..кроме меня(
ну и получается в результате DataSet.WriteXML инвалидный с т.з. XSD XML-ник:
обрезав рутовый элемент (кстати, а как сделать чтобы он не появлялся?? (речь о NewDataSet)) XML НЕ проходит валидацию XSD (что и понятно, т.к. xs:choise предпологает выбор только одного элемента (в днном случае)) Вопрос : как малой кровью это исправить??.... или вопрос2: как сделать класс, который можно без труда сериализовать, который давал бы то что мне надо ?... или вопрос3: иные варианты ? -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||||
|
|||||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
погуглив наткнулся на такое "недо решение" : ручками добавить minOccurs="0" для каждого элемента и в коде следить чтобы хоть один был заполнен...
мне это решение не нравится(... (у меня довольно большая XSD (около 120 таблиц описывает)).... перелопатить генерируемый код, конечно, можно...надобавлять везде значков "?" в параметры + дописать кода вида if(parameter==null) this.SetParameterNull(); но что-то меня это не прельщает... впрочем, это лучше чем ничего... или всеже есть решения ?? может другие тулзы генерирующие типизированный датасет ? -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Если не задаваться целью юзать XSD, можно написать класс с открытыми свойствами и тупо читать/сохранять с пом. XmlSerializer в файл. Атрибутами можно настроить, какие свойства на какие теги мапить и др.
-------------------- ![]() |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
mr.DUDA нельзяли примерчик набросать?)
XmlSerializer вроде как будет все поля сохранять (например для данного примера как сделать класс, содержащий два поля разных типов чтобы по условию сериализовалось одно из них) ? /* да, я не шарю в .net )) */ -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Пример:
-------------------- ![]() |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
mr.DUDA как раз об этом я и говорил : в твоем примере будут сериализованы оба поля, мне же надо сериализовывать "выборочно" либо то либо то.... это возможно ?
/* собственно по этой причине десериализатора как я понял и введено ограничение для xs:choise */ -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Реализовать IXmlSerializable в классе и сохранять/зачитывать вручную только те свойства, которые нужны.
-------------------- ![]() |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
пойду в гугл. благодарствую.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |