Generar clase C # desde XML

¿Puedo generar una clase C # desde un archivo XML?

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'. 

Si está trabajando en el proyecto .NET 4.5 en VS 2012 (o más reciente), puede pegar de forma especial su archivo XML como clases.

  1. Copie el contenido de su archivo XML en el portapapeles
  2. En el editor, seleccione el lugar donde desea pegar sus clases
  3. En el menú, selecciona EDIT > Paste Special > Paste XML As Classes

¡Al principio pensé que el Pegamento Especial era el Santo Grial! Pero luego lo intenté y mi cabello se puso blanco como la película de Indiana Jones.

Pero ahora uso http://xmltocsharp.azurewebsites.net/ y ahora soy más joven que nunca.

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 probablemente ya te hayas ido.

Pero tuve el mismo problema que tú, así que decidí escribir mi propio progtwig.

El problema con la ruta de “xml -> xsd -> classes” para mí era que solo generaba un trozo de código que no se podía mantener por completo y terminé arruinándolo.

No es de ninguna manera elegante, pero hizo el trabajo por mí.

Puedes obtenerlo aquí: haz sugerencias si te gusta.

SimpleXmlToCode

Deberías considerar svcutil ( pregunta svcutil )

Tanto xsd.exe como svcutil operan 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 existen varias herramientas de terceros para esto.

Puede usar xsd como lo sugirió 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" para valores enteros
minOccurs="0" se puede cambiar a minOccurs="1" donde se requiere el campo
maxOccurs="unbounded" se puede cambiar a maxOccurs="1" donde solo se permite un elemento

Puede crear xsd-s más avanzadas 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 syntax siguiente para crear una clase de esquema a partir de un archivo XSD.

 C:\xsd C:\Test\test-Schema.xsd /classes /language:cs /out:C:\Test\ 

Para convertir XML en una clase C #:

  • Navegue hasta Microsoft Visual Studio Marketplace: https://marketplace.visualstudio.com
  • En la barra de búsqueda, ingrese el texto: – xml a la herramienta de código de clase
  • Descargue, instale y use la aplicación

Nota: con el tiempo, esta aplicación puede ser reemplazada, pero lo más probable es que haya otra herramienta que haga lo mismo.