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.

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ć


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).


ś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


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


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 .


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


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/


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.


2
Jest to również dostępne w bezpłatnej edycji społeczności Idea.
lbalazscs


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.