Posso gerar uma classe C # a partir de um arquivo XML?
Posso gerar uma classe C # a partir de um arquivo XML?
Respostas:
Sim, 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 como alterar o diretório no prompt de comando do desenvolvedor para d: \ temp pode ser útil.
Se você gerar classes para uma matriz multidimensional, há um erro no gerador XSD.exe, mas existem soluções alternativas .
xsd
execute o Prompt de Comando do Desenvolvedor para VS2013 no menu Ferramentas.
xsd.exe
pode ser encontrado em:C:\Program Files (x86)\Microsoft SDKs\Windows
xsd.exe
foi encontrado em: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools
Se você estiver trabalhando no projeto .NET 4.5 no VS 2012 (ou mais recente), poderá colar Especialmente seu arquivo XML como classes.
EDIT > Paste Special > Paste XML As Classes
xsd
, mas a saída é praticamente a mesma.
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; }
e `private \ w + \ w + Campo; \ r \ n \ r \ n`
No começo, pensei que o Colar Especial era o Santo Graal! Mas então eu tentei e meu cabelo ficou branco, como no filme Indiana Jones.
Mas agora eu uso http://xmltocsharp.azurewebsites.net/ e agora sou mais jovem do que nunca.
Aqui está um segmento do que ele gerou:
namespace Xml2CSharp
{
[XmlRoot(ElementName="entry")]
public class Entry {
[XmlElement(ElementName="hybrisEntryID")]
public string HybrisEntryID { get; set; }
[XmlElement(ElementName="mapicsLineSequenceNumber")]
public string MapicsLineSequenceNumber { get; set; }
Percebo que este é um post bastante antigo e você provavelmente já mudou.
Mas como eu tinha o mesmo problema, decidi escrever meu próprio programa.
O problema com a rota "xml -> xsd -> classes" para mim foi que ele apenas gerou um pedaço de código que era completamente impossível de manter e eu acabei processando.
Não é de forma alguma elegante, mas fez o trabalho para mim.
Você pode obtê-lo aqui: faça sugestões, se quiser.
Você deve considerar svcutil ( pergunta svcutil )
Xsd.exe e svcutil operam no arquivo de esquema XML (.xsd). Seu XML deve estar em conformidade com um arquivo de esquema a ser usado por uma dessas duas ferramentas.
Observe que várias ferramentas de terceiros também existem para isso.
Você pode usar o xsd como sugerido por Darin.
Além disso, é recomendável editar o arquivo test.xsd para criar um esquema mais razoável.
type="xs:string"
pode ser alterado para type="xs:int"
para valores inteiros
minOccurs="0"
pode ser alterado para minOccurs="1"
onde o campo é obrigatório
maxOccurs="unbounded"
pode ser alterado para maxOccurs="1"
onde apenas um item é permitido
Você pode criar xsd-s mais avançados se quiser validar ainda mais seus dados, mas isso fornecerá pelo menos tipos de dados razoáveis no c # gerado.
Use a sintaxe abaixo para criar uma classe de esquema a partir do arquivo XSD.
C:\xsd C:\Test\test-Schema.xsd /classes /language:cs /out:C:\Test\
Para converter XML em uma classe C #:
Nota: na maior parte do tempo, este aplicativo pode ser substituído, mas é provável que haja outra ferramenta que faça a mesma coisa.