|
XSD в Silverlight
|
|||
---|---|---|---|
#18+
Hi, All! Есть XML-схема, по ней генерятся C# классы с помощью XSD.EXE. Эти классы не хотят компиллироваться в Silverlight. Есть ли какое решение проблемы? Проще говоря, надо сериализовать объекты в XML, заданый схемой. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2011, 22:23 |
|
XSD в Silverlight
|
|||
---|---|---|---|
#18+
Какая ошибка при компиляции? Интуитивно догадываюсь, что эти классы помечены атрибутами System.SerializableAttribute() System.ComponentModel.DesignerCategoryAttribute("") Этих атрибутов нет в silverlight - закомментируйте их и классы будут компилироваться на стороне silverlight. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2011, 03:40 |
|
XSD в Silverlight
|
|||
---|---|---|---|
#18+
SemkaaКакая ошибка при компиляции? Интуитивно догадываюсь, что эти классы помечены атрибутами System.SerializableAttribute() System.ComponentModel.DesignerCategoryAttribute("")Да, эта. SemkaaЭтих атрибутов нет в silverlight - закомментируйте их и классы будут компилироваться на стороне silverlight. Криво это. Да и бесполезно. В silverlight еще нет XmlSerializer, XmlTextWriter и еще до фига чего, что нужно для сериализации. Нужно пересматривать концепцию проекта или рыть в сторону WCF и поиска конвертора XSD -> DataContractSerializer. Может, у кого-то другой опыт есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2011, 09:27 |
|
XSD в Silverlight
|
|||
---|---|---|---|
#18+
Dmitry V. Liseev, Можно самому написать сериалайзер, в лучшем случае там кода на 20 строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2011, 12:40 |
|
XSD в Silverlight
|
|||
---|---|---|---|
#18+
Руки-крюкиDmitry V. Liseev, Можно самому написать сериалайзер, в лучшем случае там кода на 20 строк.Например? У меня есть XSD примерно из десятка файлов. Он часто меняется. Мне нужно сделать классы CS, чтобы сериализовать объекты в поток и обратно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2011, 14:23 |
|
XSD в Silverlight
|
|||
---|---|---|---|
#18+
В силвере вся работа завязана на службы WCF поэтому если класс пометить спец атрибутом (не помню сейчас, спеки нет под рукой) то он легко сериалезится в xml. Атрибутами тоже можно управлять. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2011, 19:41 |
|
XSD в Silverlight
|
|||
---|---|---|---|
#18+
Dmitry V. LiseevКриво это. Да и бесполезно. В silverlight еще нет XmlSerializer, XmlTextWriter и еще до фига чего, что нужно для сериализации. Нужно пересматривать концепцию проекта или рыть в сторону WCF и поиска конвертора XSD -> DataContractSerializer. Может, у кого-то другой опыт есть? Чего именно Вам не хватает на стороне silverlight для того, чтоб выполнять простую сериализацию/десериализацию объектов? Или задача более комплексная? Вот пример 2х extension методов, которые работают на стороне silverlight. Чтобы они работали сделайте референс на System.Xml.Linq и System.Xml.Serialization. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
eJack DataContractAttribute ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2011, 02:42 |
|
XSD в Silverlight
|
|||
---|---|---|---|
#18+
SemkaaЧего именно Вам не хватает на стороне silverlight для того, чтоб выполнять простую сериализацию/десериализацию объектов? Или задача более комплексная?Мне не хватает совершенно простой вещи: У меня есть несколько файлов XSD, ссылающихся друг на друга. Мне из них нужно получить CS классы, в которых данные помечены DataMemberAttribute (если использовать DataContractSerializer) или XmlElementAttribute (если использовать XmlSerializer) с указанием order (иначе он сериализует в алфавитном порядке по названиям полей, а мне нужно строгое соответствие результата схеме) с указанием Name (поскольку в C# поле может называться "firstName", а в XSD может "first-name"). Ну и т.д. Кроме того, нужна валидация по схеме. Написать все классы вручную и кучу юнит-тестов к ним - кривой вариант, поскольку схема меняется. Ее другие люди пишут. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2011, 11:09 |
|
XSD в Silverlight
|
|||
---|---|---|---|
#18+
Еще мне не хватает в DataMemberAttribute возможности указать DataType: Код: plaintext 1. 2.
Код: plaintext
Код: plaintext
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2011, 11:34 |
|
XSD в Silverlight
|
|||
---|---|---|---|
#18+
Вы меня немного запутали. Если не устраивает DataContractSerializer - так не используйте его, в silverlight 4 есть XmlSerializer (и судя по документации XmlElementAttribute тоже есть и поддерживает необходимые Вам DataType и Order). Если смущает, что в классы, сгенерированные xsd.exe надо добавлять атрибуты или комментировать, чтобы работали на стороне silverlight - можно автоматизировать этот процесс, благо Вы точно знаете что и куда добавлять. Хотя здесь согласен, комплексно автоматизировать сложно, сходу я не смог найти, например, t4 templates для генерации классов из xsd схемы, чтобы этот темплейт можно было модифицировать под свои нужды (может быть вот это подойдёт http://www.olegsych.com/2008/08/t4-xsd-directive/) У меня схожая задача, но немного попроще - не работаю с датами, не использую XmlElementAttribute. Для себя понял, что на стороне silverlight надо делать минимум телодвижений, в результате всю валидацию выполняю исключительно на сервере + предварительно правлю косяки. Единственное - да, ручками правлю атрибуты в сгенерированных классах, но схема у меня практически неизменна. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2011, 12:14 |
|
XSD в Silverlight
|
|||
---|---|---|---|
#18+
SemkaaЕсли смущает, что в классы, сгенерированные xsd.exe надо добавлять атрибуты или комментировать, чтобы работали на стороне silverlight - можно автоматизировать этот процесс, благо Вы точно знаете что и куда добавлять.Да, это один вариант. Похоже, он самый простой. SemkaaХотя здесь согласен, комплексно автоматизировать сложно, сходу я не смог найти, например, t4 templates для генерации классов из xsd схемы, чтобы этот темплейт можно было модифицировать под свои нуждыЭто тоже вариант, только, полагаю, самый сложный. Semkaa(может быть вот это подойдёт http://www.olegsych.com/2008/08/t4-xsd-directive/) Page Not Found SemkaaУ меня схожая задача, но немного попроще - не работаю с датами, не использую XmlElementAttribute. Для себя понял, что на стороне silverlight надо делать минимум телодвижений, в результате всю валидацию выполняю исключительно на сервере + предварительно правлю косяки. Единственное - да, ручками правлю атрибуты в сгенерированных классах, но схема у меня практически неизменна.У меня между клиентом и сервером летают потоки XML. Надо с ними работать на обоих сторонах. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2011, 13:20 |
|
XSD в Silverlight
|
|||
---|---|---|---|
#18+
Dmitry V. Liseev Page Not Found Ссылка кривая, ага. http://t4toolbox.codeplex.com/ - вот тут есть какой-то пример по xsd. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2011, 14:09 |
|
|
start [/forum/topic.php?fid=21&msg=37353205&tid=1442236]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 310ms |
total: | 469ms |
0 / 0 |