2011-05-09 8 views
5

El título casi lo dice todo. VS xsd.exe crea clases en camel case. ¿Hay alguna manera de generar las clases en el caso pascal?Nombre de clase de caso de Pascal al generar código con Visual Studio xsd.exe

Si no, nadie sabe de una buena herramienta para convertir una carga de nombres de clase de camel case a pascal case.

Gracias

EDIT:

xsd.exe no genera nombres de las clases en caso de camellos como estándar - sólo sigue la convención del esquema - sin embargo, estoy interesado en anular este comportamiento por lo que el atributo de nombre XmlElement seguirá las convenciones definidas por el esquema, pero el nombre de clase es pascal case.

Respuesta

1

No sabía que xsd.exe lo hizo, ¿está seguro de que los tipos en el esquema no están definidos en camelCase también?

Mi sugerencia sería utilizar xsd2code, que es muy superior a xsd.exe en todos los sentidos ..

+0

Bueno, los tipos en el esquema son camello, pero ¿es esa la práctica estándar xml? la mayoría de los xml que veo tienden a ser en estuches de camello; por lo tanto, sería bueno si utilizara automáticamente el caso pascal, como es práctica habitual en los lenguajes .NET. ¿es posible hacer lo que solicité en xsd2code? – jcvandan

+0

no es una práctica estándar como tal, pero sí es común (http://stackoverflow.com/questions/442529/is-there-a-standard-naming-convention-for-xml-elements). No creo que xsd2code se convierta en PascalCase de fábrica, lo que le deja pocas opciones ... la primera opción sería adoptar PascalCase en sus esquemas. La segunda opción sería ejecutar una hoja de estilo XSLT contra su esquema que cambie los nombres a PascalCase. La tercera opción sería hacer una refactorización automática del código C# generado. ¡Ninguna de las opciones es particularmente atractiva! Lo siento, no pude ayudarte más .. – MattDavey

+0

En cuanto a la segunda opción (XSLT), hay una función para convertir identificadores a PascalCase - http://xsltsl.sourceforge.net/string.html#template.str:to-camelcase (tenga en cuenta que en XSLT se lo conoce como UpperCamelCase o TitleCase). Todavía me duele tener que ejecutar los esquemas a través de una hoja de estilos :( – MattDavey

0

Salida XmlSchemaClassGenerator, una aplicación de consola de código abierto que incluye PascalCasing entre sus características. (Lo encontré después de que caducara la versión de prueba de 15 días de xsd2code).)

  • espacios de nombres XML Mapa a C# espacios de nombres, ya sea explícitamente o por medio de una función (configurable)
  • Generar comentarios de C# XML de anotaciones de esquema
  • Generar DataAnnotations atributos de las restricciones de esquema
  • Uso Collection<T> propiedades (inicializado en constructor y con setter privado)
  • Use int, long, decimal o string para xs: número entero y tipos derivados
  • propiedades automáticas
  • caso Pascal para las clases y propiedades
  • Generar propiedades del adaptador anulables para elementos opcionales y atributos sin valores predeterminados (ver más abajo)
  • Soporte opcional para PCL
  • soporte opcional para INotifyPropertyChanged

En mi caso, antes de que pudiera obtener la aplicación de consola para el trabajo, tuve que modificar el documento xsd para incluir un campo targetNamespace de la siguiente manera:

original:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1"> 

modificación:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="gateway" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1"> 

Mi uso última parecía algo como esto:

XmlSchemaClassGenerator.Console -n "http://www.w3.org/2001/XMLSchema=gateway" -o "C:\{output-folder}" {xsd-file-name}.xsd 
Cuestiones relacionadas