Qualche strumento per generare uno schema XSD da un documento di istanza XML? [chiuso]


146

Sto cercando uno strumento che prenderà un documento di istanza XML e produca uno schema XSD corrispondente.

Riconosco certamente che lo schema XSD generato sarà limitato rispetto alla creazione manuale di uno schema (probabilmente non gestirà elementi facoltativi o ripetitivi o vincoli di dati), ma potrebbe almeno servire da punto di partenza rapido.

Risposte:


65

lo strumento di inferenza di Microsoft XSD è una buona soluzione gratuita. Molti strumenti di modifica XML, come XmlSpy (menzionato da @Garth Gilmour) o OxygenXML Editor hanno anche quella funzione. Sono piuttosto costosi, però. BizTalk Server ha anche uno strumento di inferenza XSD.

modifica: ho appena scoperto la classe .ml XmlSchemaInference , quindi se stai usando .net dovresti considerarlo


1
wow, mesi dopo mi hai indicato un'ottima soluzione per fare una rapida conversione da XDR a XSD! Grazie!
bethlakshmi,

6
È stato difficile trovare un download per questo strumento (xsd.exe), ma era già sul mio sistema in C: \ Programmi \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin. Ho pensato di condividere nel caso in cui fosse d'aiuto a qualcuno.
Dal

2
Nel caso in cui qualcuno non abbia Visual Studio installato, ecco un link alternativo per scaricare xsd: juliankay.com/development/download-xsd-exe
MD

5
La directory sembra xsd.exeaver cambiato su Windows 7. ce l'ho in molti Microsoft SDKsindici, tra cui questo uno (in modo che non sembra necessariamente dipendere da Visual Studio più?): C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools. Ho dovuto eseguirlo nella directory contenente l'xml, per evitare un errore su "caratteri illegali nel percorso", ma ciò potrebbe essere dovuto al lungo nome del file che ho.
Yahoo Serio

Qualcun altro ha problemi a utilizzare lo strumento di inferenza MS XSD, generando una OutOfMemoryException per un file XML da 200 MB con ancora più di 8 GB di RAM libera?
Felipe Sabino,

54

Puoi utilizzare un'opzione open source e multipiattaforma: inst2xsd dai XMLBeans di Apache . Lo trovo molto utile e facile.

Basta scaricare, decomprimere e giocare (richiede Java).


ottimo consiglio, mi ha davvero aiutato molto, grazie!
IAdapter,

2
OMG Questo è molto meglio di tutte quelle cazzate di Powershell! Soprattutto da quando non avevo un file XSD!
Chloe,

3
ha funzionato come un incanto :: cd <directory_bean_bin_directory>; ./inst2xsd -design ss -simple-content-types smart -enumerations 4 <input_file.xml> -outDir <output_Directory>
diaryfolio


3
Si noti che XMLBeans è stato spostato su attic.apache.org , la sede dei progetti Apache ritirati. In altre parole, non è stato aggiornato dal 2012.
Magnilex,

51

Trang è l'opzione migliore qui. Open source e multipiattaforma (anche se è richiesto Java)

Dal sito Web di Trang:

Trang converte tra diversi linguaggi di schema per XML. Supporta le seguenti lingue

  • RELAX NG (sintassi XML)
  • Sintassi RELAX NG compatta
  • DTD XML 1.0
  • Schema XML del W3C

Uno schema scritto in una qualsiasi delle lingue dello schema supportate può essere convertito in una qualsiasi delle altre lingue dello schema supportate, tranne per il fatto che lo schema XML W3C è supportato solo per l'output, non per l'input.

Trang può anche dedurre uno schema da uno o più documenti XML di esempio.

Link per scaricare


Trang è anche lo strumento integrato in OxygenXML per fare la sua deduzione XSD da uno o più documenti XMl. Al primo tentativo qui sembra funzionare bene.
redcalx

4
Se tutto ciò di cui hai bisogno è generare xsd dal file xml, trang è l'IMHO migliore, più veloce e più semplice.
Kriver,

2
La documentazione di Trang è un po 'sottile. Per generare uno schema, esegui $ trang file.xml schema.xsd.
Joe Mornin,

su windows run: java -jar trang.jar file.xml schema.xsd
Alexey Obukhov

Aveva sottostrutture che appaiono nella stessa forma in vari punti del mio campione XML, Trang ha fatto un lavoro perfetto nel rilevare la ripetizione e generare un XSD minimo, che è quello di cui avevo bisogno. Molto bella!
Tomislav Nakic-Alfirevic,


12

C'è anche quello XML schema learnerche è disponibile su Github .

Può prendere più file XML ed estrarre un XSD comune da tutti quei file .


1
Ricorda che questo strumento è scritto in php, quindi non è banale da configurare.
79E09796,

5
@ 79E09796 Installazione di un cli php con sudo apt-get install php5-clie in esecuzione ./learn --help--- Non vedo davvero la differenza tra quello e uno strumento scritto in java, python o ruby ​​:)
edorian

1
appena provato sotto Windows - ha funzionato alla grande con PHP 5.4 senza alcuna installazione. Sia l'apprendente php che XML Schema hanno appena decompresso ed eseguito utilizzando i percorsi completi;)
vak

piccolo commento sul localitycampo: se un nome di campo viene utilizzato in più punti nell'XML in riferimento a diversi elementi, localityè richiesto un valore maggiore di 1, ad esempio root/iteme si root/something/itemriferiscono a tipi diversi, quindi --locality 2è richiesto come minimo
shadi

10

Se hai installato .Net, per impostazione predefinita è già incluso uno strumento per generare schemi e classi XSD.
Per me, lo strumento XSD è installato nella seguente struttura. Ciò può variare in base alla directory di installazione.

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 le classi e gli schemi che questo strumento genera funzionano piuttosto bene, specialmente se li consumerai in un linguaggio .Net

In genere prendo il documento XML che sto cercando, lo spingo attraverso lo strumento XSD con il /o:<your path>flag per generare uno schema (xsd) e quindi riporto il file xsd attraverso lo strumento usando i /classes /L:VB (or CS) /o:<your path>flag per ottenere classi che posso importare e usare nei miei progetti quotidiani .Net


6

Se tutto ciò che desideri è XSD, LiquidXML ha una versione gratuita che esegue gli XSD e ha una GUI in modo da poter modificare l'XSD se lo desideri. Ad ogni modo al giorno d'oggi scrivo i miei XSD a mano, ma grazie a questa app.

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


4

se stai lavorando nel mondo java - intelliJ idea ha anche un ampio supporto xml, tra cui xsd generation e samle xml di xsd generation, e con plugin puoi ottenere debugger xslt. - particolarmente utile se prevedi di utilizzare strumenti come Jaxb in seguito.


2
E questo è disponibile anche nell'edizione gratuita della community di Idea.
lbalazscs,


3

Questo è un vecchio thread ma ho pensato che potesse essere utile pubblicare questo link: ho appena trovato questo strumento: xsd-gen Genera schema XML da XML

e ha fatto proprio quello di cui avevo bisogno.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.