Solo deseo que esto genere propiedades implementadas automáticamente, como lo hace para "Pegar JSON como clases". Actualmente esto significa un resultado de código inflado 6 veces, que es mucho más difícil de leer. Esto solo me hace buscar otra herramienta, desafortunadamente.
Nicholas Petersen
1
¿Se dejó esto fuera de VS 2013?
Roger
3
@Roger No he usado VS 2013, pero creo que esta característica debería estar allí, asegúrese de que su proyecto esté dirigido a .NET 4.5 Framework
miszczu
2
Esto es mucho más rápido que xsd, pero la salida es casi la misma.
Jess
44
Si no tiene un compartidor, use regex y reemplace con public (\w+) (\w+)\r\n +\{\r\n +get\r\n +\{\r\n +return this.*;\r\n +\}\r\n +set\r\n +\{\r\n +this.*;\r\n +\}\r\n +\}\r\n=> public $1 $2 { get; set; }y `private \ w + \ w + Field; \ r \ n \ r \
n`
44
¡Al principio pensé que la pasta especial era el santo grial! Pero luego lo probé y mi cabello se volvió blanco al igual que la película de Indiana Jones.
El resultado de esta herramienta es bueno, pero solo quiero hacer una advertencia para no enviar ningún dato confidencial a este sitio (o cualquier otro para el caso). Aunque aprecio el servicio que se ofrece, no hay una política de privacidad y poca o ninguna seguridad de que lo que pegue no se registra y se examinó, etc.
SvenAelterman
2
Tenía un archivo xml que tiene algunas relaciones recursivas (tal vez se llama relación circular, no estoy seguro). Los otros fallaron pero xmltocsharp.azurewebsites.net tuvo mucho éxito en ese xml.
Koray
44
@ D.Kermott gracias por el enlace al sitio web, lo he echado un vistazo rápido y parece que funciona mucho mejor que el especial de pegado, el código se ve más limpio, aunque mi prueba xml creó más clases, fue mucho más agradable de usar
Harag
Lástima que parece invertir el orden de las clases (elementos externos enumerados en último lugar)
Savage
22
Me doy cuenta de que esta es una publicación bastante antigua y que probablemente hayas seguido adelante.
Pero tuve el mismo problema que tú, así que decidí escribir mi propio programa.
El problema con la ruta "xml -> xsd -> classes" para mí fue que simplemente generó un trozo de código que era completamente imposible de mantener y terminé volcándolo.
De ninguna manera es elegante, pero hizo el trabajo por mí.
Puede obtenerlo aquí: haga sugerencias si lo desea.
produce código incorrecto: // ELEMENTS [XmlIgnore] public DateTime Value {get; conjunto; } [XmlText] cadena pública ValueString {get {return Value? "verdadero Falso"; } establecer {Valor = valor == "verdadero"; }}
André Fiedler
Y los constructores son innecesarios + debe incluir comentarios para miembros visibles públicamente
André Fiedler
1
En mi defensa, fue algo que golpeé muy rápido, lo que funcionó para mí. No he vuelto a ello, pero siéntase libre de contribuir al repositorio con cualquier cambio.
Talon
He estado usando esto durante unos meses, no es perfecto, pero es bastante útil y creo que genera un XML mucho más legible / simple que el pegado como XML de VS2013. Muy apreciado Talon.
Tanto xsd.exe como svcutil funcionan en el archivo de esquema XML (.xsd). Su XML debe ajustarse a un archivo de esquema para ser utilizado por cualquiera de estas dos herramientas.
Tenga en cuenta que también existen varias herramientas de terceros para esto.
Además de eso, se recomienda editar el archivo test.xsd para crear un esquema más razonable.
type="xs:string"se puede cambiar a type="xs:int"valores enteros minOccurs="0"se puede cambiar a minOccurs="1"donde se requiere el campo se maxOccurs="unbounded"puede cambiar amaxOccurs="1" donde solo se permite un elemento
Puede crear xsd-s más avanzados si desea validar aún más sus datos, pero esto al menos le dará tipos de datos razonables en el c # generado.
Respuestas:
Sí, usando xsd.exe
Notas
Responda cómo cambiar el directorio en el símbolo del sistema del desarrollador a d: \ temp puede ser útil.
Si genera clases para una matriz multidimensional, hay un error en el generador XSD.exe, pero hay soluciones .
fuente
xsd
ejecute el símbolo del sistema del desarrollador para VS2013 en el menú de herramientas.xsd.exe
se puede encontrar en:C:\Program Files (x86)\Microsoft SDKs\Windows
xsd.exe
fue encontrado en:C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools
Si está trabajando en el proyecto .NET 4.5 en VS 2012 (o más reciente), puede simplemente Pegar su archivo XML como clases especiales.
EDIT > Paste Special > Paste XML As Classes
fuente
xsd
, pero la salida es casi la misma.public (\w+) (\w+)\r\n +\{\r\n +get\r\n +\{\r\n +return this.*;\r\n +\}\r\n +set\r\n +\{\r\n +this.*;\r\n +\}\r\n +\}\r\n
=>public $1 $2 { get; set; }
y `private \ w + \ w + Field; \ r \ n \ r \¡Al principio pensé que la pasta especial era el santo grial! Pero luego lo probé y mi cabello se volvió blanco al igual que la película de Indiana Jones.
Pero ahora uso http://xmltocsharp.azurewebsites.net/ y ahora soy tan joven como siempre.
Aquí hay un segmento de lo que generó:
fuente
Me doy cuenta de que esta es una publicación bastante antigua y que probablemente hayas seguido adelante.
Pero tuve el mismo problema que tú, así que decidí escribir mi propio programa.
El problema con la ruta "xml -> xsd -> classes" para mí fue que simplemente generó un trozo de código que era completamente imposible de mantener y terminé volcándolo.
De ninguna manera es elegante, pero hizo el trabajo por mí.
Puede obtenerlo aquí: haga sugerencias si lo desea.
SimpleXmlToCode
fuente
Debe considerar svcutil ( pregunta de svcutil )
Tanto xsd.exe como svcutil funcionan en el archivo de esquema XML (.xsd). Su XML debe ajustarse a un archivo de esquema para ser utilizado por cualquiera de estas dos herramientas.
Tenga en cuenta que también existen varias herramientas de terceros para esto.
fuente
Puede usar xsd como lo sugiere Darin.
Además de eso, se recomienda editar el archivo test.xsd para crear un esquema más razonable.
type="xs:string"
se puede cambiar atype="xs:int"
valores enterosminOccurs="0"
se puede cambiar aminOccurs="1"
donde se requiere el campo semaxOccurs="unbounded"
puede cambiar amaxOccurs="1"
donde solo se permite un elementoPuede crear xsd-s más avanzados si desea validar aún más sus datos, pero esto al menos le dará tipos de datos razonables en el c # generado.
fuente
Use la siguiente sintaxis para crear una clase de esquema a partir del archivo XSD.
fuente
Para convertir XML en una clase C #:
Nota: en la totalidad del tiempo, esta aplicación puede ser reemplazada, pero es probable que haya otra herramienta que haga lo mismo.
fuente