Как создать classы .NET 4.0 из xsd?

Каковы варианты генерации .NET 4.0 c # classов (сущностей) из файла xsd с использованием Visual Studio 2010?

6 Solutions collect form web for “Как создать classы .NET 4.0 из xsd?”

достаточно простой; просто запустите (в командной строке vs)

xsd your.xsd /classes 

(который будет создавать your.cs ). Обратите внимание, однако, что большинство встроенных параметров здесь не сильно изменились, поскольку 2.0

Для параметров используйте xsd /? или см. MSDN ; например, /enableDataBinding может быть полезна.

xsd.exe, как упоминал Марк Гравелл. Самый быстрый способ подняться и запустить IMO.

Или, если вам нужна дополнительная гибкость / опции:

xsd2code VS add-in (Codeplex)

xsd.exe не работает, когда у вас есть циклические ссылки (т. е. тип может владеть элементом своего типа прямо или косвенно).

Когда существуют циклические ссылки, я использую Xsd2Code. Xsd2Code хорошо работает с круглыми ссылками и работает в VS IDE, что является большим плюсом. Он также имеет множество функций, которые вы можете использовать, например, для генерации кода сериализации / десериализации. Убедитесь, что вы включили GenerateXMLAttributes, если вы генерируете сериализацию, хотя (в противном случае вы получите исключения для упорядочения, если не определены для всех элементов).

Ни одна из них не работает с функцией выбора. вы получите список / коллекции объекта вместо того, который вам нужен. Я бы рекомендовал избегать выбора в вашем xsd, если это возможно, поскольку это не сериализует / десериализуется хорошо в строго типизированный class. Если вас это не волнует, то это не проблема.

Любая функция в xsd2code десериализуется как System.Xml.XmlElement, которую я нахожу очень удобным, но может быть проблемой, если вы хотите иметь сильные типизированные объекты. Я часто использую любые, когда разрешаю пользовательские данные конфигурации, поэтому XmlElement удобно переходить к другому десериализатору XML, который настраивается в другом месте.

Я использую XSD в пакетном скрипте для генерации файла .xsd и classов из XML напрямую:

 set XmlFilename=Your__Xml__Here set WorkingFolder=Your__Xml__Path_Here set XmlExtension=.xml set XsdExtension=.xsd set XSD="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1\Tools\xsd.exe" set XmlFilePath=%WorkingFolder%%XmlFilename%%XmlExtension% set XsdFilePath=%WorkingFolder%%XmlFilename%%XsdExtension% %XSD% %XmlFilePath% /out:%WorkingFolder% %XSD% %XsdFilePath% /c /out:%WorkingFolder% 

Ответ Marc Gravells был прав для меня, но мой xsd был с расширением .xml. Когда я использовал программу xsd, он дал:
- The table (Amt) cannot be the child table to itself in nested relations.

В соответствии с этим KB325695 я переименовал расширение из .xml в .xsd, и он отлично работал.

Я использовал xsd.exe в командной строке Windows.

Однако, поскольку мой xml ссылался на несколько онлайн-xml (в моем случае http://www.w3.org/1999/xlink.xsd которые ссылаются на http://www.w3.org/2001/xml.xsd ), мне также пришлось загрузите эти схемы, поместите их в тот же каталог, что и мой xsd, а затем перечислите эти файлы в команде:

«C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Инструменты \ xsd.exe” / classes / language: CS your.xsd xlink.xsd xml.xsd

  • В чем цель XSD-файлов?
  • XML - данные на корневом уровне недействительны
  • JAXB: Как изменить имена classов, сгенерированных XJC, когда тип attr указан в XSD?
  • Генерировать classы Java из .XSD-файлов ...?
  • Для чего нужны пространства имен XML?
  • Ограничение XML-элементов на основе другого элемента через XSD
  • API Java для анализа файла схемы XSD
  • Создание WSDL из файла XSD
  • Как я могу сказать jaxb / Maven для создания нескольких пакетов схем?
  • Атрибут minOccurs не может присутствовать
  • XML-схема minOccurs / maxOccurs значения по умолчанию
  • Interesting Posts

    Google Analytics блокирует Android-приложение

    Windows 10: изменение сочетаний клавиш для переключения между рабочими столами

    Используя Rails, как я могу установить свой первичный ключ, чтобы он не был столбцом с целым типом?

    Как заставить ForceShell возвращать массив, когда вызов возвращает только один объект?

    Каков предпочтительный синтаксис для определения перечислений в JavaScript?

    JQuery’s $ находится в конфликте с StringTemplate.Net в ASP.Net MVC

    Как использовать jQuery для отображения / скрытия divs на основе выбора переключателя?

    Почему метод concat () Java не делает ничего?

    Как я могу сделать снимок экрана с полным PDF-файлом?

    Тень коробки в IE7 и IE8

    Изменение размера страниц в Adobe Acrobat Pro

    когда использовать метод toString ()

    Может ли jQuery считывать / записывать cookies в браузер?

    Mac OS X: как удалить PlugSuit

    Как определить class родового типа?

    Давайте будем гением компьютера.