Как программно генерировать .NET классы из XSD? (Как и xsd.exe)

Я хотел бы создать классы способом xsd.exe, а неlinqпуть toxsd.

Спасибо, --Ran.

 leppie01 июл. 2009 г., 11:54
Возможно не хочет, что тебе?
 Groo01 июл. 2009 г., 12:11
@ leppie: не будет ли Простейшие решение будет называть XSD? Одна строка кода? (ПОЦЕЛУЙ / тебе это не понадобится)
 John Saunders01 июл. 2009 г., 11:56
@ leppie: это уточнит требования. Например, есть ли у него ограничение не вызывать внешние программы? Не использовать программы Microsoft?
 marc_s01 июл. 2009 г., 13:12
Одна из причин против XSD в том, что этоВСЕ ЕЩ по сей день не поддерживает List <T> - он по-прежнему всегда создает T [], что просто ужасно.
 Groo01 июл. 2009 г., 11:52
Почему бы тебе не использовать xsd.exe?

Ответы на вопрос(4)

Класс Процесса. Я сделал это один раз, и это быстро и просто. Вам не нужно будет сильно скучать:).

Xsd2Code

Похоже, это лучший бесплатный инструмент с открытым исходным кодом.

Хорошая интеграция с VS2010

Для меня это отлично работает.

Решение Вопроса

System.Xml.Serialization.XmlCodeExporter учебный класс

ОБНОВИТ (если Джон Сондерс не стал читать дальше)

"Xsd.exe использует XmlCodeExporter для генерации классов из документов определения схемы XML (XSD)."

 Thomas Levesque01 июл. 2009 г., 12:01
"не предназначен для использования" не означает "не может использоваться";)
 leppie01 июл. 2009 г., 11:58
Я использую его с версии 1.1, есть ли проблема с ним?
 Cerebrus01 июл. 2009 г., 12:08
+ 1 для этой информации. Я всегда думал, что запуск xsd.exe в процессе был единственным решением. : -)
 John Saunders01 июл. 2009 г., 11:55
«Этот API поддерживает инфраструктуру .NET Framework и не предназначен для использования непосредственно из вашего кода»
 John Saunders01 июл. 2009 г., 13:01
@ leppie, Thomas: это зависит от того, важен ли этот код для тебя. Код "инфраструктуры" может быть изменен без нытья. В конце концов, они только сказали вам не использовать его с .net 1.1.

Вы можете загрузить один или несколько экземпляров XmlSchema класс в XmlSchemaSet. Это позволит вам программно исследовать все части схемы и другие схемы, на которые она может ссылаться. Вы можете использовать эту информацию для генерации кода, либо в виде текста, который впоследствии необходимо будет скомпилировать, либо с использованием CodeDOM. Видеть Динамическая генерация и компиляция исходного кода.

Если вы генерируете код в контексте Visual Studio, я бы посоветовал вам сделать это с помощью шаблонов T4. Видеть Генерирование артефактов с помощью текстовых шаблонов.

 Ran01 июл. 2009 г., 12:04
Из-за сложности XML-схемы, сам ее синтаксический анализ и генерация классов будут, по меньшей мере, кошмаром.
 John Saunders01 июл. 2009 г., 13:00
Я не предлагал тебе разбирать это самому. Вы загружаете одну схему с помощью XmlSchema.Load, а затем добавляете результат в XmlSchemaSet. Добавьте все схемы, которые вам нужны, к этому набору, затем вы можете «скомпилировать» его для проверки и исправления перекрестных ссылок; наконец, вы можете пройтись по структуре и сгенерировать свой код.
 John Saunders01 июл. 2009 г., 17:22
Я хорошо знаком с SOM, поэтому я выбрал бы генерацию кода на основе шаблонов T4, управляемых SOM.
 Ran01 июл. 2009 г., 15:34
Извините, я хотел сказать (не разбирать) структуру. Я не знаю, насколько вы знакомы с SOM или спецификацией XML Schema. но это большая и довольно сложная задача для генерации кода из XML-схемы (даже если учесть, что вы должны поддерживать только подмножество спецификации XML-схемы, которое на самом деле может быть переведено в код прямо сейчас), поэтому я предпочитаю повторять используйте код по этому вопросу.

Ваш ответ на вопрос