2008-11-14 11 views

Respuesta

28

Como alternativa, está Xsd2Code. Algunas características:

  • Generar clase parcial.
  • Soporte genérico y colección personalizada (Lista, ObservableCollection, MyCustomCollection).
  • Admite propiedades automáticas cuando no se requiere un conjunto especial.
  • Puede generar atributos WCF (DataContract/DataMember).
  • Soporte de tipo anulable.
  • Enmascare el campo privado en IDE (use el atributo EditorBrowsableState.Never).
  • Genera la asignación de objetos en el constructor.
  • Implemente INotifyPropertyChanged para habilitar DataBinding para wpf o Silverlight.
  • Mejora la productividad con el complemento visual studio.
  • Genera documentación resumida de la anotación xsd.
  • Compruebe si los valores nuevos y anteriores int setter son los mismos antes de levantar la propiedad evento cambiado.
  • generación de opciones de copia de seguridad en el encabezado cs o vb.
  • Guarde y cargue el documento Xml en el almacenamiento de archivos aislado para la aplicación Silverlight (nuevo en 3.0).
  • Generar código CS, VB o CPP.
  • Serializar/deserializar el objeto.
  • Guárdelo en el archivo y cárguelo del archivo.
  • Incluya Xsd2CodeCustomTool.
+0

Estaba buscando una forma de hacer que xsd.exe genere propiedades abreviadas. Aunque eso no es posible, Xsd2Code lo hará por separado (use xsd.exe para convertir .xml en .xsd, luego Xsd2Code para generar la clase C#). Gracias. –

+2

Esta es una gran información, pero no me queda claro cómo responde la pregunta. (Tal vez la pregunta debería ser modificada). –

+0

@Kirk Es una (mucho) mejor solución para crear clases desde un XSD que cualquiera de las herramientas mencionadas en la pregunta. –

4

parece que se puede utilizar con VS2005 al menos (según this article, anyway)

Sólo tiene que añadir a su colección de herramientas externas de VS2005 en "Herramientas >> Herramientas externas ...".

establecer los parámetros de la siguiente

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

sí parece que XSD y XSDObjectGen producirán diferentes clases. De hecho, los comentarios en este artículo de Rick Strahl dicen "producen muy diferentes clases" en el article here.

+0

¿Qué tan interesante ... un voto a favor? Proporcione una explicación si mi respuesta fue confusa o engañosa. Estoy seguro de que a otros lectores les gustaría beneficiarse. –

6

La diferencia es:

Para dar una idea, aquí hay una lista de características Resumen de XSDObjectGen.exe:

  • Soporte para el esquema XML más popular construye
  • enumerador y recopilación de conducta para los elementos que se repiten modelo
  • Programación que coincide con el esquema
  • Construcción de subclase automática
  • Nombre collision avoidance
  • Visual Studio IDE integración
  • lógica de manipulación especial para este tipo DateTime
  • apoyo
  • espacio de nombres XML serialización
  • Soporte opcional y Secuencia
  • Elección Soporte
  • grupo de sustitución
  • método MakeSchemaCompliant esquema multiparte
  • Handli de referencia no opcional ng
  • WS-I.cumplimiento perfil básico org
  • Multi-idioma de programación de apoyo
  • profundidad sabia Transversales Eventos

Para más detalles sobre estas características ver el archivo XSDObjectGen.docdocumentación (disponible en C:\Program Files\XSDObjectGenerator después de instalar la herramienta)

3

A un nivel puramente técnico:

XSD.exe utiliza Arrays
XSDObjectGen toma un pequeño paso adelante y utiliza ArrayLists.
XSD2Code salta adelante con el uso de Generics.

Si usa .NET 2.0 y superior, es preferible utilizar XSD2Code.