2009-08-10 8 views
5

Estoy mirando algunas clases de actualización de trabajo generadas desde xsds. Creo que esto sería un gran uso de las plantillas de T4, pero no veo ningún ejemplo de gente haciendo esto. Esencialmente, me gustaría hacer lo que Linq to XSD ha hecho, pero sin incluir los objetivos de construcción alfa en una solución de producción.¿Alguien sabe de alguna plantilla T4 para generar clases de xsd?

¿Algún enlace relevante por ahí?


Ahora una wiki. Almacene sus respuestas relevantes aquí.

Respuesta

3

Actualmente estoy usando xsd2code.net, encontrarlo aquí: http://xsd2code.codeplex.com/. Un montón de ventajas:

  • de código abierto, para que pueda sintonizar/piratear

  • reemplazar las matrices con las listas o incluso su propio tipo de colección personalizada

  • ejecución de comandos, o ejecutar como un estudio de complemento visual (clic derecho xsd, digo para generar)

también me gusta que se puede ejecutar en un solo archivo xsd una Y no explotará si no se puede encontrar el xsd referenciado (como lo hace xsd.exe). Por lo tanto, es fácil ejecutarlo en archivos individuales, en caso de que solo desee hacer una actualización rápida en un archivo.

Sin embargo, T4 también debería ser una opción, simplemente busqué en Google T4 XSD y encontré algunas soluciones para hablar de esto.

+0

Creo que esta es la mejor solución en este momento. Una mejor solución es, probablemente, evitar la situación para empezar. – Will

+0

Para actualizar sobre esto: Actualmente estoy revisando este proyecto - http://oxmlibrary.codeplex.com/ - Parece un poco hackish pero más "pirateable" si tiene sentido. –

+0

Will, estoy de regreso haciendo esto exactamente otra vez. La evasión puede ser mejor, pero en el caso en que se haya definido un estándar industrial en xsd, generar clases a partir del esquema es una operación muy válida. Aunque no es muy divertido. –

1

Encontré que XSD es muy difícil de usar como modelo para la generación de código. Es demasiado flexible y complejo para ser práctico para mis necesidades. El diseñador/generador de DataSet fuertemente tipado es un gran ejemplo de un intento de usar XSD como modelo de generación de código. Funciona bien la mayor parte del tiempo, pero no es compatible con todos los esquemas posibles que pueda lanzar. Por otro lado, XSD no puede representar la información requerida para generar adaptadores de tabla directamente, por lo que hubo que crear extensiones específicas de DataSet.

Si decide seguir adelante y usar XSD como modelo, probablemente quiera elegir un subconjunto simple, suficiente para lo que necesita generar. Un enfoque podría ser cargar el esquema XSD en un objeto DataSet y usar este objeto DataSet como modelo. Los metadatos de DataSet son mucho más simples de acceder que XSD de uso general. Esto también le permitiría usar el diseñador de DataSet existente en Visual Studio para editar sus modelos.

+0

La generación de código es para las clases que llevará a cabo xml deserializado. O construyo mis propios modelos y analizo xml en ellos, o simplemente deserializo objetos de xml directamente. Buscando una solución más liviana que los conjuntos de datos ... una que me permita escribir clases parciales para los datos deserializados. – Will

Cuestiones relacionadas