XSDObjectGen.exe vs XSD.exe

17

Может ли кто-нибудь сказать мне, в чем разница между XSDObjectGen.exe & amp; XSD.exe?

Есть ли способ сделать XSDObjectGen.exe работать в dot net 2.0?

    
задан Nimesh Madhavan 14.11.2008 в 06:52
источник

4 ответа

28

В качестве альтернативы существует Xsd2Code . Некоторые функции:

  • Создание частичного класса.
  • Поддержка общей и пользовательской коллекции (List, ObservableCollection, MyCustomCollection).
  • Поддерживать автоматические свойства, если не требуется специальный набор или набор.
  • Может генерировать атрибуты WCF (DataContract / DataMember).
  • Поддерживает неровный тип.
  • Маска частного поля в среде IDE (используйте атрибут EditorBrowsableState.Never).
  • Сгенерировать распределение объектов в конструкторе.
  • Внедрить INotifyPropertyChanged для включения DataBinding для wpf или Silverlight.
  • Повышает производительность благодаря надстройке с визуальной студией.
  • Сгенерировать итоговую документацию из аннотации xsd.
  • Проверьте, не изменились ли новые и старые значения int setter перед тем, как добавить событие с изменением свойства.
  • создание резервных копий в заголовках cs или vb.
  • Сохраните и загрузите документ Xml в изолированное хранилище файлов для приложения silverlight (новое в версии 3.0).
  • Сгенерировать код CS, VB или CPP.
  • Сериализовать / десериализовать объект.
  • Сохранение в файл и загрузка из файла.
  • Включить Xsd2CodeCustomTool.
ответ дан Daniel Rose 09.06.2010 в 12:17
источник
  • Я искал способ получить xsd.exe для создания сокращенных свойств. Хотя это невозможно, Xsd2Code сделает это кусочком (используйте xsd.exe, чтобы превратить .xml в .xsd, а затем Xsd2Code, чтобы сгенерировать класс C #). Благодарю. –  Chris Moschini 06.01.2012 в 22:29
  • Это отличная информация, но мне непонятно, как она отвечает на вопрос. (Может быть, вопрос должен быть изменен). –  Kirk Kuykendall 23.01.2012 в 18:32
  • @Kirk Это (далекое) лучшее решение для создания классов из XSD, чем любой из инструментов, упомянутых в вопросе. –  Daniel Rose 23.01.2012 в 21:36
  • Что делать, если два XSD MyClass1.xsd и MyClass2.xsd. Оба объекта MyClass1 и MyClass2 оба ссылаются на MyClass3. Создает ли он объекты MyClass3 для каждого типа или обнаруживает, что тип уже существует? –  Rhyous 06.05.2015 в 01:18
  • @Rhyous Если у вас есть MyClasses.xsd, который включает в себя и ссылается на MyClass1 и MyClass2, тогда сгенерированный файл (при запуске xsd2code на MyClasses.xsd) должен иметь только одно определение MyClass3. –  Daniel Rose 06.05.2015 в 13:50
6

Разница заключается в следующем:

Чтобы дать вам некоторое представление, вот список основных функций для XSDObjectGen.exe :

  • Поддержка наиболее популярных конструкций схем XML
  • Перечисление и поведение коллекции для повторяющихся элементов
  • Модель программирования, соответствующая схеме
  • Автоматическое построение подклассов
  • Устранение конфликтов при столкновении
  • Интеграция с IDE Visual Studio
  • Специальная логика обработки для типов DateTime
  • Поддержка многостраничной схемы.
  • Сериализация пространства имен XML
  • Поддержка опций и последовательностей
  • Поддержка выбора
  • Группа замещения
  • Метод MakeSchemaCompliant
  • Некомплексная обработка ссылочного типа
  • Соответствие базового профиля WS-I.org
  • Поддержка нескольких языков программирования
  • Глубокие события траверса

Подробнее об этих функциях см. файл документации XSDObjectGen.doc (доступный в C:\Program Files\XSDObjectGenerator после установки инструмента).

    
ответ дан Daniel Fortunov 09.06.2010 в 12:13
источник
4

Похоже, вы можете использовать его с VS2005 по крайней мере (согласно этой статье , в любом случае )

Просто добавьте его в коллекцию внешних инструментов VS2005 в разделе «Инструменты & gt; & gt; Внешние инструменты ...».

Задайте параметры следующим образом

  • Для VB: $ (ItemPath) / l: vb /f:$(ItemFileName).vb / c / d / t
  • Для C #: $ (ItemPath) / l: cs /f:$(ItemFileName).vb / c / d / t

Похоже, что XSD и XSDObjectGen будут давать разные классы. Фактически, комментарии в этой статье Рика Стралла гласят: « они дают very разные классы " в здесь .

    
ответ дан Dan Esparza 14.11.2008 в 23:54
источник
  • Как интересно ... вниз? Просьба представить объяснение, если мой ответ был путаным или вводящим в заблуждение. Я уверен, что другие читатели хотели бы воспользоваться. –  Dan Esparza 31.01.2014 в 16:45
3

На чисто техническом уровне:

XSD.exe использует Arrays
XSDObjectGen делает крошечный шаг вперед и использует ArrayLists .
XSD2Code прыгает вперед с использованием Generics .

Если вы используете .NET 2.0 и выше, используя XSD2Code, наиболее предпочтительным.

    
ответ дан Shankar R10N 18.02.2011 в 18:33
источник