Jakieś narzędzia do generowania schematu XSD z dokumentu wystąpienia XML? [Zamknięte]

146

Szukam narzędzia, które weźmie dokument wystąpienia XML i wyprowadzi odpowiedni schemat XSD.

Z pewnością zdaję sobie sprawę, że wygenerowany schemat XSD będzie ograniczony w porównaniu do ręcznego tworzenia schematu (prawdopodobnie nie będzie obsługiwał elementów opcjonalnych lub powtarzających się, czy ograniczeń danych), ale mógłby przynajmniej służyć jako szybki punkt wyjścia.

Matt Dillard
źródło

Odpowiedzi:

65

narzędzie wnioskowanie Microsoft XSD jest dobry, darmowe rozwiązanie. Wiele narzędzi do edycji XML, takich jak XmlSpy (wspomniany przez @Garth Gilmour) lub Edytor OxygenXML również ma tę funkcję. Są jednak dość drogie. BizTalk Server ma również narzędzie wnioskowania XSD.

edycja: właśnie odkryłem klasę .net XmlSchemaInference , więc jeśli używasz .net, powinieneś to rozważyć

Danimal
źródło
1
wow, miesiące później wskazałeś mi świetne rozwiązanie umożliwiające szybką konwersję XDR na XSD! Dzięki!
bethlakshmi
6
Trudno było mi znaleźć plik do pobrania dla tego narzędzia (xsd.exe), ale znajdował się on już w moim systemie w C: \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin. Pomyślałem, że podzielę się na wypadek, gdyby to komuś pomogło.
oob
2
W przypadku, gdy ktoś nie ma zainstalowanego Visual Studio, oto alternatywny link do pobrania xsd: juliankay.com/development/download-xsd-exe
MD
5
Katalog wydaje xsd.exesię, że zmienił się na Windows 7. Mam go w wielu Microsoft SDKskatalogach, wśród których jeden (tak, to nie wydaje się, aby koniecznie zależy na Visual Studio już?) C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools. Musiałem uruchomić go w katalogu zawierającym xml, aby uniknąć błędu dotyczącego „niedozwolonych znaków w ścieżce”, ale może to być spowodowane długą nazwą pliku.
Yahoo Serious
Czy ktoś jeszcze ma problem z używaniem narzędzia wnioskowania MS XSD, zgłaszając wyjątek OutOfMemoryException dla pliku XML o wielkości 200 MB z nadal większą niż 8 GB wolnej pamięci RAM?
Felipe Sabino
54

Możesz użyć opcji open source i międzyplatformowej: inst2xsd z XMLBeans Apache . Uważam, że jest to bardzo przydatne i łatwe.

Po prostu pobierz, rozpakuj i graj (wymaga Java).

Dario
źródło
świetna wskazówka, która naprawdę bardzo mi pomogła, dzięki!
IAdapter
2
OMG To jest o wiele lepsze niż te wszystkie bzdury z Powershell! Zwłaszcza, że ​​nie miałem pliku XSD!
Chloe,
3
działał jak urok :: cd <xml_bean_bin_directory>; ./inst2xsd -design ss -simple-content-types smart -enumerations 4 <input_file.xml> -outDir <output_Directory>
diaryfolio
3
Zwróć uwagę, że XMLBeans zostało przeniesione do attic.apache.org , siedziby wycofanych projektów Apache. Innymi słowy, nie był aktualizowany od 2012 roku.
Magnilex
51

Trang jest tutaj najlepszą opcją. Open source i wieloplatformowy (chociaż wymagana jest Java)

Ze strony internetowej Trang:

Trang konwertuje między różnymi językami schematu dla XML. Obsługuje następujące języki

  • RELAX NG (składnia XML)
  • Kompaktowa składnia RELAX NG
  • Pliki DTD XML 1.0
  • Schemat XML W3C

Schemat napisany w dowolnym z obsługiwanych języków schematu można przekonwertować na dowolny inny obsługiwany język schematu, z wyjątkiem tego, że schemat W3C XML jest obsługiwany tylko dla danych wyjściowych, a nie dla danych wejściowych.

Trang może również wywnioskować schemat z jednego lub większej liczby przykładowych dokumentów XML.

Link do pobrania

Derferman
źródło
Trang jest również narzędziem zintegrowanym z OxygenXML do wykonywania wnioskowania XSD z jednego lub więcej dokumentów XMl. Na pierwszy rzut oka wydaje się, że działa dobrze.
redcalx
4
Jeśli potrzebujesz tylko wygenerować xsd z pliku xml, trang jest najlepszym, najszybszym i najłatwiejszym IMHO.
kriver,
2
Dokumentacja trang jest trochę cienka. Aby wygenerować schemat, uruchom $ trang file.xml schema.xsd.
Joe Mornin
w systemie Windows uruchom: java -jar trang.jar file.xml schema.xsd
Alexey Obukhov
Mając podstruktury, które pojawiają się w tej samej formie w różnych miejscach w mojej próbce XML, Trang wykonał doskonałą robotę w wykrywaniu powtórzeń i generowaniu minimalnego XSD, czego potrzebowałem. Bardzo dobrze!
Tomislav Nakic-Alfirevic
17

W VS2010, jeśli ładujesz plik XML do edytora, kliknij menu XML >> Utwórz schemat.

Nathan Donnellan
źródło
3
A w wyższych wersjach
Jay Jay Jay
12

Jest również XML schema learnerdostępny na Github .

Może pobrać wiele plików xml i wyodrębnić wspólny plik XSD ze wszystkich tych plików .

edorian
źródło
1
Pamiętaj, że to narzędzie jest napisane w PHP, więc konfiguracja nie jest prosta.
79E09796
5
@ 79E09796 Instalowanie sudo apt-get install php5-clii uruchamianie cli php ./learn --help--- nie widzę różnicy między tym a narzędziem napisanym w Javie, Pythonie lub Ruby :)
edorian
1
właśnie wypróbowałem pod Windows - działało świetnie z php 5.4 bez żadnej instalacji. Uczący się zarówno php, jak i XML Schema właśnie rozpakował i wykonał przy użyciu pełnych ścieżek;)
vak
mały komentarz do localitypola: jeśli nazwa pola jest używana w wielu miejscach w XML i odnosi się do różnych elementów, localitywymagana jest wartość większa niż 1, np. root/itemi root/something/itemodnosi się do różnych typów, to --locality 2jest to wymagane jako minimum
shadi
10

Jeśli masz zainstalowaną platformę .Net, narzędzie do generowania schematów i klas XSD jest już dołączone domyślnie.
U mnie narzędzie XSD jest instalowane w następującej strukturze. Może się to różnić w zależności od katalogu instalacyjnego.

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:]

Zwykle klasy i schematy generowane przez to narzędzie działają raczej dobrze, zwłaszcza jeśli zamierzasz używać ich w języku .Net

Zwykle biorę dokument XML, którego szukam, przepycham go przez narzędzie XSD z /o:<your path>flagą, aby wygenerować schemat (xsd), a następnie przepycham plik xsd z powrotem przez narzędzie, używając /classes /L:VB (or CS) /o:<your path>flag, aby uzyskać klasy, które mogę zaimportować i używać w moich codziennych projektach .Net

Pat Hermens
źródło
6

Jeśli wszystko, czego chcesz, to XSD, LiquidXML ma bezpłatną wersję, która obsługuje XSD, i ma GUI, dzięki czemu możesz dostosować XSD, jeśli chcesz. W każdym razie obecnie piszę własne XSD ręcznie, ale to wszystko dzięki tej aplikacji.

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

Robert Gould
źródło
4

jeśli pracujesz w świecie java - intelliJ idea ma również rozbudowaną obsługę XML, w tym generację xsd i samle xml z generacji xsd, a dzięki wtyczkom możesz pobrać debuggery xslt. - szczególnie przyjemne, jeśli planujesz później używać narzędzi takich jak jaxb.

Andreas Petersson
źródło
2
Jest to również dostępne w bezpłatnej edycji społeczności Idea.
lbalazscs
3

Altova XmlSpy robi to dobrze - możesz znaleźć przegląd tutaj

Garth Gilmour
źródło
3

To jest stary wątek, ale pomyślałem, że warto opublikować ten link: właśnie znalazłem to narzędzie: xsd-gen Generuj schemat XML z XML

i po prostu zrobił to, czego potrzebowałem.

v_e
źródło