¿Cómo generar clases .NET 4.0 desde xsd?

Resuelto Bastien Vandamme asked hace 13 años • 11 respuestas

¿Cuáles son las opciones para generar clases (entidades) de .NET 4.0 c# a partir de un archivo xsd, utilizando Visual Studio 2010?

Bastien Vandamme avatar Mar 07 '11 15:03 Bastien Vandamme
Aceptado

Suficientemente simple; simplemente ejecute (en el símbolo del sistema vs)

xsd your.xsd /classes

(que creará your.cs). Sin embargo, tenga en cuenta que la mayoría de las opciones intrínsecas aquí no han cambiado mucho desde la versión 2.0.

Para conocer las opciones, utilice xsd /?o consulte MSDN ; por ejemplo /enableDataBindingpuede resultar útil.

Marc Gravell avatar Mar 07 '2011 09:03 Marc Gravell

xsd.exe como lo menciona Marc Gravell. La forma más rápida de poner en marcha la OMI.

O si necesita más flexibilidad/opciones:

Complemento xsd2code VS (Codeplex)

Serge Wautier avatar Mar 07 '2011 09:03 Serge Wautier

Aquí te muestro la forma más sencilla de usar Vs2017 y Vs2019. Abra su xsd con Visual Studio y genere un archivo xml de muestra como en la URL sugerida.

  1. Una vez que haya abierto su xsd en la vista de diseño como se muestra a continuación, haga clic en el explorador de esquemas xml ingrese la descripción de la imagen aquí

2. Dentro del “Explorador de esquemas XML”, desplácese hacia abajo para encontrar el nodo raíz/datos. Haga clic derecho en el nodo raíz/datos y mostrará "Generar XML de muestra". Si no se muestra, significa que no está en el nodo del elemento de datos pero sí en cualquiera de los nodos de definición de datos.

ingrese la descripción de la imagen aquí

  1. Copie su XML generado en el portapapeles
  2. Cree una nueva clase vacía en su solución y elimine la definición de clase. Solo debe quedar el espacio de nombres
  3. Mientras el puntero del mouse está enfocado dentro de su clase, elija EDITAR-> Pegado especial-> Pegar Xml como clases.
Emil avatar Sep 02 '2019 17:09 Emil

xsd.exe no funciona bien cuando tiene referencias circulares (es decir, un tipo puede poseer un elemento de su propio tipo directa o indirectamente).

Cuando existen referencias circulares, uso Xsd2Code. Xsd2Code maneja bien las referencias circulares y funciona dentro de VS IDE, lo cual es una gran ventaja. También tiene muchas funciones que puede utilizar, como generar el código de serialización/deserialización. Sin embargo, asegúrese de activar GenerateXMLAttributes si está generando serialización (de lo contrario, obtendrá excepciones para ordenar si no está definido en todos los elementos).

Ninguno de los dos funciona bien con la función de elección. terminarás con listas/colecciones de objetos en lugar del tipo que deseas. Recomiendo evitar opciones en su xsd si es posible, ya que esto no serializa/deserializa bien en una clase fuertemente tipada. Sin embargo, si esto no te importa, entonces no es un problema.

La función any en xsd2code se deserializa como System.Xml.XmlElement, lo cual me parece muy conveniente, pero puede ser un problema si desea objetos con tipos fuertes. A menudo uso cualquiera cuando permito datos de configuración personalizados, por lo que es conveniente pasar un XmlElement a otro deserializador XML que esté definido de forma personalizada en otro lugar.

VoteCoffee avatar Dec 03 '2013 15:12 VoteCoffee