¿Puedo generar una clase C # a partir de un archivo XML?
¿Puedo generar una clase C # a partir de un archivo XML?
Respuestas:
Sí, usando xsd.exe
D:\temp>xsd test.xml
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation. All rights reserved.
Writing file 'D:\temp\test.xsd'.
D:\temp>xsd test.xsd /classes
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation. All rights reserved.
Writing file 'D:\temp\test.cs'.
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 .
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
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ó:
namespace Xml2CSharp
{
[XmlRoot(ElementName="entry")]
public class Entry {
[XmlElement(ElementName="hybrisEntryID")]
public string HybrisEntryID { get; set; }
[XmlElement(ElementName="mapicsLineSequenceNumber")]
public string MapicsLineSequenceNumber { get; set; }
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.
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.
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 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.
Use la siguiente sintaxis para crear una clase de esquema a partir del archivo XSD.
C:\xsd C:\Test\test-Schema.xsd /classes /language:cs /out:C:\Test\
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.