Bir XML örnek belgesinden bir XSD şeması oluşturmak için herhangi bir araç var mı? [kapalı]


146

Bir XML örnek belgesini alacak ve karşılık gelen bir XSD şemasını çıkaracak bir araç arıyorum.

El ile bir şema oluşturmakla karşılaştırıldığında, oluşturulan XSD şemasının sınırlı olacağını kesinlikle kabul ediyorum (muhtemelen isteğe bağlı veya tekrar eden öğeleri veya veri kısıtlamalarını işlemez), ancak en azından hızlı bir başlangıç ​​noktası olarak hizmet edebilir.

Yanıtlar:


65

Microsoft XSD çıkarım aracı iyi, ücretsiz bir çözümdür. XmlSpy (@Garth Gilmour tarafından bahsedilir) veya OxygenXML Editor gibi birçok XML düzenleme aracı da bu özelliğe sahiptir. Yine de oldukça pahalıdırlar. BizTalk Server ayrıca bir XSD çıkarım aracına sahiptir.

edit: .net XmlSchemaInference sınıfını yeni keşfettim , bu yüzden .net kullanıyorsanız bunu göz önünde bulundurmalısınız


1
vay, aylar sonra beni hızlı bir XDR'den XSD'ye dönüştürme yapmak için harika bir çözüme işaret ettiniz! Teşekkürler!
bethlakshmi

6
Bu araç (xsd.exe) için bir indirme bulmak benim için zordu, ancak zaten sistemimde C: \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin dizinindeydi. Birinin yardım etmesi durumunda paylaşacağımı düşündüm.
oob

2
Birinin Visual Studio'nun yüklü olmaması durumunda, xsd'yi
MD

5
Dizin görünüyor xsd.exeBirçok içinde var Windows 7'de değişmiş Microsoft SDKs(? İlle artık Visual Studio bağımlı görünmüyor böylece), dizinleri arasında bu bir: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools. "Yoldaki geçersiz karakterler" ile ilgili bir hatayı önlemek için xml'yi içeren dizinde çalıştırmak zorunda kaldım, ancak bu, sahip olduğum uzun dosya adından kaynaklanıyor olabilir.
Yahoo Serious

MS XSD çıkarım aracını kullanmakta sorun yaşayan, hala 8GB'tan fazla boş RAM içeren 200MB XML dosyası için OutOfMemoryException oluşturan başka biri var mı?
Felipe Sabino

54

Açık kaynak ve çapraz platform seçeneğini kullanabilirsiniz: Apache'nin XMLBeans'inden inst2xsd . Bunu çok kullanışlı ve kolay buluyorum.

Sadece indirin, açın ve oynatın (Java gerektirir).


harika ipucu, bu gerçekten bana çok yardımcı oldu, teşekkürler!
IAdapter

2
OMG Bu Powershell saçmalıklarından çok daha iyi! Özellikle de bir XSD dosyam olmadığı için!
Chloe

3
bir cazibe gibi çalıştı :: cd <xml_bean_bin_directory>; ./inst2xsd -design ss -simple-content-types smart -enumerations 4 <input_file.xml> -outDir <output_Directory>
diaryfolio


3
XMLBeans'in emekli Apache projelerinin evi olan attic.apache.org'a taşındığına dikkat edin . Başka bir deyişle, 2012'den beri güncellenmedi.
Magnilex

52

Trang buradaki en iyi seçenektir. Açık kaynak ve çapraz platform (Java gerekli olmasına rağmen)

Trang Web Sitesinden:

Trang, XML için farklı şema dilleri arasında dönüştürme yapar. Aşağıdaki dilleri destekler

  • RELAX NG (XML sözdizimi)
  • RELAX NG kompakt sözdizimi
  • XML 1.0 DTD'leri
  • W3C XML Şeması

Desteklenen şema dillerinden herhangi birinde yazılmış bir şema, desteklenen diğer şema dillerinden herhangi birine dönüştürülebilir, ancak W3C XML Şeması giriş için değil, yalnızca çıktı için desteklenir.

Trang ayrıca bir veya daha fazla örnek XML belgesinden bir şema çıkarabilir.

İndirme: {link


Trang ayrıca, XSD çıkarımını bir veya daha fazla XMl belgesinden yapmak için OxygenXML'ye entegre bir araçtır. Buradaki ilk denemede iyi çalışıyor gibi görünüyor.
redcalx

4
İhtiyacınız olan tek şey xml dosyasından xsd oluşturmaksa, trang en iyi, en hızlı ve en kolay IMHO'dur.
kriver

2
Trang belgeleri biraz zayıf. Bir şema oluşturmak için çalıştırın $ trang file.xml schema.xsd.
Joe Mornin

Windows'ta çalıştırın: java -jar trang.jar file.xml schema.xsd
Alexey Obukhov

XML örneğimde çeşitli yerlerde aynı biçimde görünen alt yapılara sahip olan Trang, tekrarı tespit etmek ve minimum XSD oluşturmak için mükemmel bir iş çıkardı, ihtiyacım olan buydu. Çok hoş!
Tomislav Nakic-Alfirevic


12

Orada da XML schema learnergeçerli olan Github .

Birden fazla xml dosyası alabilir ve tüm bu dosyalardan ortak bir XSD çıkarabilir .


1
Bu aracın php ile yazıldığını unutmayın, bu nedenle kurulum için önemsiz değildir.
79E09796

5
@ 79E09796 Bir cli php kurmak sudo apt-get install php5-clive çalıştırmak ./learn --help--- bununla java, python veya ruby ​​ile yazılmış bir araç arasındaki farkı gerçekten görmüyorum :)
edorian

1
Windows altında denedim - herhangi bir kurulum yapmadan php 5.4 ile harika çalıştı. Php ve XML Şeması öğrenen Hem sadece sıkıştırması ve tam yollarını kullanarak yürütülür;)
Vak'ı

localityalanla ilgili küçük yorum : XML'de farklı öğelere atıfta bulunan birden fazla yerde bir alan adı kullanılıyorsa, locality1'den daha büyük bir değer gerekir, örneğin root/itemve root/something/itemfarklı türlere atıfta bulunulursa , --locality 2minimum olarak gereklidir
shadi

10

Net yüklediyseniz, XSD şemaları ve sınıfları oluşturmak için bir araç varsayılan olarak zaten dahil edilmiştir.
Benim için XSD aracı aşağıdaki yapının altına kurulur. Bu, kurulum dizininize bağlı olarak değişebilir.

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

Normalde, bu aracın oluşturduğu sınıflar ve şemalar oldukça iyi çalışır, özellikle bunları .Net dilinde kullanacaksanız

Genellikle peşinde olduğum XML belgesini alırım, /o:<your path>bir şema (xsd) oluşturmak için bayrakla birlikte XSD aracından geçiririm ve ardından /classes /L:VB (or CS) /o:<your path>içe aktarabileceğim ve kullanabileceğim sınıfları almak için bayrakları kullanarak xsd dosyasını araçtan geri gönderirim günden güne .Net projeleri


6

Tek istediğiniz XSD ise, LiquidXML'in XSD'leri çalıştıran ücretsiz bir sürümü vardır ve bir GUI'si vardır, böylece isterseniz XSD'yi değiştirebilirsiniz. Neyse bugünlerde kendi XSD'lerimi elle yazıyorum, ancak hepsi bu uygulama sayesinde.

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


4

Java dünyasında çalışıyorsanız - intelliJ idea ayrıca xsd oluşturma ve xsd neslinden örnek xml dahil olmak üzere kapsamlı xml desteğine sahiptir ve eklentilerle xslt hata ayıklayıcıları alabilirsiniz. - daha sonra jaxb gibi araçları kullanmayı planlıyorsanız özellikle güzel.


2
Bu, Idea'nın ücretsiz topluluk sürümünde de mevcuttur.
lbalazscs


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.