Alguma ferramenta para gerar um esquema XSD a partir de um documento de instância XML? [fechadas]


146

Estou procurando uma ferramenta que pegue um documento de instância XML e produza um esquema XSD correspondente.

Certamente reconheço que o esquema XSD gerado será limitado quando comparado à criação de um esquema manualmente (provavelmente não manipulará elementos opcionais ou repetitivos ou restrições de dados), mas poderia pelo menos servir como um ponto de partida rápido.

Respostas:


65

a ferramenta de inferência do Microsoft XSD é uma solução boa e gratuita. Muitas ferramentas de edição de XML, como o XmlSpy (mencionado por @Garth Gilmour) ou o OxygenXML Editor também possuem esse recurso. Eles são bastante caros, no entanto. O BizTalk Server também possui uma ferramenta para inferir XSD.

edit: Acabei de descobrir a classe .net XmlSchemaInference , portanto, se você estiver usando .net, considere isso


1
uau, meses depois você me indicou uma ótima solução para fazer uma rápida conversão de XDR para XSD! Obrigado!
25411 bethlakshmi

6
Foi difícil encontrar um download para essa ferramenta (xsd.exe), mas já estava no meu sistema em C: \ Arquivos de Programas \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin. Só pensei em compartilhar caso isso ajude alguém.
oob

2
No caso de alguém não tem Visual Studio instalado, aqui está um link alternativo para baixar xsd: juliankay.com/development/download-xsd-exe
MD

5
O diretório parece xsd.exeter mudado no Windows 7. Eu tê-lo em muitos Microsoft SDKsdiretórios, entre os quais um presente (para que ele não parece depende necessariamente Visual Studio mais?): C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools. Eu tive que executá-lo no diretório que contém o xml, para evitar um erro sobre "caracteres ilegais no caminho", mas isso pode ser devido ao nome de arquivo longo que tenho.
Yahoo Serious

Alguém mais está tendo problemas para usar a ferramenta de inferência MS XSD, gerando uma OutOfMemoryException para um arquivo XML de 200 MB com ainda mais de 8 GB de RAM livre?
Felipe Sabino

54

Você pode usar uma opção de código aberto e de plataforma cruzada: inst2xsd do XMLBeans do Apache . Acho muito útil e fácil.

Basta baixar, descompactar e jogar (requer Java).


ótima dica, que realmente me ajudou muito, thx!
IAdapter 26/06/09

2
OMG Isso é muito melhor do que toda essa besteira do Powershell! Especialmente porque eu não tinha um arquivo XSD!
Chloe

3
funcionou como um encanto :: cd <xml_bean_bin_directory>; ./inst2xsd -design ss -simple-content-types smart -enumerations 4 <input_file.xml> -outDir <output_Directory>
diaryfolio


3
Observe que o XMLBeans foi movido para attic.apache.org , a casa dos projetos aposentados do Apache. Em outras palavras, ele não é atualizado desde 2012.
Magnilex 01/09/2015

51

Trang é a melhor opção aqui. Código aberto e plataforma cruzada (embora seja necessário Java)

No site da Trang:

Trang converte entre diferentes linguagens de esquema para XML. Ele suporta os seguintes idiomas

  • RELAX NG (sintaxe XML)
  • Sintaxe compacta RELAX NG
  • DTDs XML 1.0
  • Esquema XML do W3C

Um esquema gravado em qualquer uma das linguagens de esquema suportadas pode ser convertido em qualquer uma das outras linguagens de esquema suportadas, exceto que o Esquema XML do W3C é suportado apenas para saída, não para entrada.

Trang também pode inferir um esquema de um ou mais documentos XML de exemplo.

Link para Download


O Trang também é a ferramenta integrada ao OxygenXML para fazer sua inferência XSD de um ou mais documentos XMl. Na primeira tentativa aqui, parece funcionar bem.
precisa saber é

4
Se tudo o que você precisa é gerar xsd a partir de um arquivo xml, o trang é o IMHO melhor, mais rápido e mais fácil.
kriver

2
A documentação do trang é um pouco fina. Para gerar um esquema, execute $ trang file.xml schema.xsd.
precisa

em janelas de correr: java -jar trang.jar file.xml schema.xsd
Alexey Obukhov

Teve subestruturas que aparecem da mesma forma em vários lugares na minha amostra XML, Trang fez um trabalho perfeito ao detectar a repetição e gerar um XSD mínimo, que é o que eu precisava. Muito agradável!
Tomislav Nakic-Alfirevic 4/11


12

Também existe o XML schema learnerque está disponível no Github .

Ele pode pegar vários arquivos xml e extrair um XSD comum de todos esses arquivos .


1
Esteja ciente de que esta ferramenta é escrita em php, por isso não é trivial de configurar.
79E09796 19/03/12

5
@ 79E09796 Instalar um php cli com sudo apt-get install php5-clie funcionando ./learn --help--- Eu realmente não vejo a diferença entre isso e uma ferramenta escrita em Java, Python ou Ruby :)
edorian

1
apenas tentei no windows - funcionou muito bem com o php 5.4 sem qualquer instalação. PHP e XML Schema aluno apenas descompactado e executado usando os caminhos completos;)
vak

pequeno comentário sobre o localitycampo: se um nome de campo for usado em vários lugares no XML, referindo-se a diferentes elementos, um localityvalor maior que 1 será necessário, por exemplo, root/iteme se root/something/itemreferirá a tipos diferentes, então --locality 2será necessário no mínimo
shadi

10

Se você tiver o .Net instalado, uma ferramenta para gerar esquemas e classes XSD já estará incluída por padrão.
Para mim, a ferramenta XSD é instalada sob a seguinte estrutura. Isso pode variar dependendo do diretório de instalação.

C:\Program Files\Microsoft Visual Studio 8\VC>xsd
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 2.0.50727.42]
Copyright (C) Microsoft Corporation. All rights reserved.

xsd.exe -
   Utility to generate schema or class files from given source.

xsd.exe <schema>.xsd /classes|dataset [/e:] [/l:] [/n:] [/o:] [/s] [/uri:]
xsd.exe <assembly>.dll|.exe [/outputdir:] [/type: [...]]
xsd.exe <instance>.xml [/outputdir:]
xsd.exe <schema>.xdr [/outputdir:]

Normalmente, as classes e esquemas que essa ferramenta gera funcionam muito bem, especialmente se você os consumir em uma linguagem .Net

Normalmente, pego o documento XML que procuro, envia-o através da ferramenta XSD com o /o:<your path>sinalizador para gerar um esquema (xsd) e, em seguida, envia o arquivo xsd pela ferramenta usando os /classes /L:VB (or CS) /o:<your path>sinalizadores para obter classes que eu posso importar e usar nos meus projetos .Net do dia a dia


6

Se tudo o que você deseja é XSD, o LiquidXML possui uma versão gratuita que executa XSDs e possui uma GUI para que você possa ajustar o XSD, se quiser. De qualquer forma hoje em dia eu escrevo meus próprios XSDs à mão, mas tudo isso graças a este aplicativo.

http://www.liquid-technologies.com/


4

se você estiver trabalhando no mundo java - a idéia intelliJ também possui amplo suporte a xml, incluindo xsd generation e samle xml da xsd generation, e com plugins você pode obter depuradores xslt. - especialmente agradável se você planeja usar ferramentas como o jaxb posteriormente.


2
E isso também está disponível na edição comunitária gratuita do Idea.
lbalazscs


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.