Eu só desejo que essas propriedades auto-implementadas sejam geradas, como acontece com "Colar JSON como classes". Atualmente, isso significa um resultado de código inchado em 6 vezes, o que é muito mais difícil de ler. Só isso me faz procurar outra ferramenta, infelizmente.
Nicholas Petersen
1
Isso foi deixado de fora do VS 2013?
Roger
3
@Roger Eu não usei VS 2013, mas acho que esse recurso deveria estar lá, certifique-se seu projeto tem como alvo .NET Framework 4.5
miszczu
2
Isso é muito mais rápido que xsd, mas a saída é praticamente a mesma.
Jess
4
Se você não tem uso ReSharper regex substituir por 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`
AlexDev
44
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.
A saída desta ferramenta é boa, mas eu só quero dar uma palavra de cautela por aí para não enviar nenhum dado confidencial para este site (ou qualquer outro nesse sentido). Embora eu aprecie o serviço oferecido, não há política de privacidade e pouca ou nenhuma garantia de que o que você cola não será registrado e examinado etc.
SvenAelterman
2
Eu tinha um arquivo xml com algumas relações recursivas (talvez seja chamado de relação circular, não tenho certeza.) Os outros falharam, mas o xmltocsharp.azurewebsites.net teve muito sucesso nesse xml.
Koray
4
@ D.Kermott obrigado pelo link do site, dei uma olhada rápida e parece que ele faz um trabalho muito melhor do que o colar especial, o código parece mais limpo, embora meu xml de teste tenha criado mais classes, foi muito melhor usar.
Harag
Pena que parece inverter a ordem das classes (elementos externos listados por último)
Savage
22
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.
produz código incorreto: // ELEMENTS [XmlIgnore] public DateTime Value {get; conjunto; } String pública [XmlText] ValueString {get {return Value? "verdadeiro falso"; } defina {Value = value == "true"; }}
André Fiedler
E os construtores são desnecessárias + você deve incluir comentários para membros visíveis publicamente
André Fiedler
1
Em minha defesa, foi algo que bati muito rapidamente que funcionou para mim. Não voltei a isso, mas sinta-se à vontade para contribuir com o repo para quaisquer alterações.
Talon
Estou usando isso há alguns meses - não é perfeito, mas é bastante útil e acho que gera XML muito mais legível / simples que a pasta do VS2013 como XML. Muito apreciado Talon.
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.
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.
Respostas:
Sim, usando xsd.exe
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 .
fonte
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
fonte
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:
fonte
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.
SimpleXmlToCode
fonte
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.
fonte
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 paratype="xs:int"
para valores inteirosminOccurs="0"
pode ser alterado paraminOccurs="1"
onde o campo é obrigatóriomaxOccurs="unbounded"
pode ser alterado paramaxOccurs="1"
onde apenas um item é permitidoVocê 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.
fonte
Use a sintaxe abaixo para criar uma classe de esquema a partir do arquivo XSD.
fonte
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.
fonte