Вопрос по c#, xml, schema, .net – Как программно генерировать .NET классы из XSD? (Как и xsd.exe)

4

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

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

Почему бы тебе не использовать xsd.exe? Groo
Одна из причин против XSD в том, что этоВСЕ ЕЩ по сей день не поддерживает List <T> - он по-прежнему всегда создает T [], что просто ужасно. marc_s
Возможно не хочет, что тебе? leppie
@ leppie: это уточнит требования. Например, есть ли у него ограничение не вызывать внешние программы? Не использовать программы Microsoft? John Saunders
@ leppie: не будет ли Простейшие решение будет называть XSD? Одна строка кода? (ПОЦЕЛУЙ / тебе это не понадобится) Groo

Ваш Ответ

4   ответа
5

Xsd2Code

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

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

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

3

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

10

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

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

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

«Этот API поддерживает инфраструктуру .NET Framework и не предназначен для использования непосредственно из вашего кода» John Saunders
Я использую его с версии 1.1, есть ли проблема с ним? leppie
"не предназначен для использования" не означает "не может использоваться";) Thomas Levesque
+ 1 для этой информации. Я всегда думал, что запуск xsd.exe в процессе был единственным решением. : -) Cerebrus
@ leppie, Thomas: это зависит от того, важен ли этот код для тебя. Код "инфраструктуры" может быть изменен без нытья. В конце концов, они только сказали вам не использовать его с .net 1.1. John Saunders
1

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

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

Из-за сложности XML-схемы, сам ее синтаксический анализ и генерация классов будут, по меньшей мере, кошмаром. Ran
Я не предлагал тебе разбирать это самому. Вы загружаете одну схему с помощью XmlSchema.Load, а затем добавляете результат в XmlSchemaSet. Добавьте все схемы, которые вам нужны, к этому набору, затем вы можете «скомпилировать» его для проверки и исправления перекрестных ссылок; наконец, вы можете пройтись по структуре и сгенерировать свой код. John Saunders
Извините, я хотел сказать (не разбирать) структуру. Я не знаю, насколько вы знакомы с SOM или спецификацией XML Schema. но это большая и довольно сложная задача для генерации кода из XML-схемы (даже если учесть, что вы должны поддерживать только подмножество спецификации XML-схемы, которое на самом деле может быть переведено в код прямо сейчас), поэтому я предпочитаю повторять используйте код по этому вопросу. Ran
Я хорошо знаком с SOM, поэтому я выбрал бы генерацию кода на основе шаблонов T4, управляемых SOM. John Saunders

Похожие вопросы