有什么工具可以从XML实例文档生成XSD模式?[关闭]


146

我正在寻找一种工具,该工具将使用XML实例文档并输出相应的XSD架构。

我当然认识到,与手动创建模式相比,生成的XSD模式将受到限制(它可能无法处理可选或重复的元素或数据约束),但至少可以作为一个快速的起点。

Answers:


65

微软XSD推理工具是一个很好的,免费的解决方案。许多XML编辑工具,例如XmlSpy(@Garth Gilmour提到)或OxygenXML Editor也具有该功能。但是,它们相当昂贵。BizTalk Server也具有XSD推断工具。

编辑:我刚刚发现了.net XmlSchemaInference类,因此,如果您使用的是.net,则应考虑


1
哇,几个月后,您为我指出了一个很好的解决方案,可以快速将XDR转换为XSD!谢谢!
bethlakshmi

6
我很难找到此工具的下载文件(xsd.exe),但是该文件已经在我的系统上的C:\ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin中。只是想我会分享以防万一。
oob 2012年

2
如果没有安装Visual Studio,则这里是下载xsd的备用链接:juliankay.com/development/download-xsd-exe
MD

5
xsd.exe在Windows 7上,目录似乎已更改。我在许多Microsoft SDKs目录中都有它(因此,它似乎不必再依赖Visual Studio了吗?),其中一个是:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools。我必须在包含xml的目录中运行它,以防止出现有关“路径中非法字符”的错误,但这可能是由于我的文件名太长所致。
雅虎认真的

是否还有其他人在使用MS XSD推理工具时遇到麻烦,从而为200MB XML文件引发了OutOfMemoryException,而该文件的可用RAM仍然超过8GB?
Felipe Sabino

54

您可以使用开源和跨平台选项:Apache的XMLBeans中的 inst2xsd 。我觉得它非常有用和容易。

只需下载,解压缩并播放(需要Java)。


很棒的提示,对我真的很有帮助,谢谢!
IAdapter 2009年

2
OMG这比Powershell的废话要好得多!特别是因为我没有XSD文件!
Chloe 2012年

3
像魅力一样工作:: cd <xml_bean_bin_directory>; ./inst2xsd -design ss-简单内容类型智能-枚举4 <input_file.xml> -outDir <output_Directory>
diaryfolio 2014年


3
请注意,XMLBeans已移至attic.apache.org,这是退休的Apache项目的所在地。换句话说,自2012
。– Magnilex

51

董里是这里最好的选择。开源和跨平台(尽管需要Java)

从董里网站:

Trang在XML的不同模式语言之间转换。它支持以下语言

  • RELAX NG(XML语法)
  • RELAX NG紧凑语法
  • XML 1.0 DTD
  • W3C XML模式

可以将以任何受支持的模式语言编写的模式转换为任何其他受支持的模式语言,只是W3C XML Schema仅支持输出而不是输入。

Trang还可以从一个或多个示例XML文档中推断模式。

下载链接


Trang还是集成到OxygenXML中的工具,可以根据一个或多个XMl文档进行XSD推断。第一次尝试这里似乎工作良好。
redcalx 2010年

4
如果您需要的只是从xml文件生成xsd,则trang是最好,最快和最容易的恕我直言。
kriver 2012年

2
trang文档有点薄。要生成模式,请运行$ trang file.xml schema.xsd
乔·莫宁

在Windows上运行:java -jar trang.jar file.xml schema.xsd
Alexey Obukhov

在我的XML示例中,子结构在各个地方都以相同的形式出现,因此Trang在检测重复并生成最小的XSD方面做得非常出色,这正是我所需要的。非常好!
Tomislav Nakic-Alfirevic '16


12

XML schema learnerGithub上也有可用。

它可以获取多个xml文件,从所有这些文件中提取一个通用的XSD


1
请注意,此工具是用php编写的,因此设置并非易事。
79E09796 2012年

5
@ 79E09796安装cli php sudo apt-get install php5-cli并运行./learn --help---我真的看不到它与用Java,Python或ruby编写的工具之间的区别:)
edorian 2012年

1
刚刚在Windows下尝试过-无需任何安装即可在php 5.4上很好地工作。php和XML Schema学习器都只是解压缩并使用完整路径执行;)
vak 2012年

关于locality字段的小注释:如果在XML中的多个位置使用字段名称来引用不同的元素,locality则需要大于1的值(例如root/itemroot/something/item引用不同的类型),则--locality 2至少必须使用此值
shadi

10

如果已安装.Net,则默认情况下已包含用于生成XSD架构和类的工具。
对我而言,XSD工具安装在以下结构下。这可能因安装目录而异。

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

通常,此工具生成的类和模式工作得很好,尤其是如果您要使用.Net语言使用它们时,尤其如此

我通常会提取所需的XML文档,并通过带有/o:<your path>标志的XSD工具将其推入以生成模式(xsd),然后使用/classes /L:VB (or CS) /o:<your path>标志通过工具将xsd文件推回以获取可导入和使用的类。在我的日常.Net项目中


6

如果您只需要XSD,LiquidXML就会提供一个免费的版本来执行XSD,并提供一个GUI,以便您可以根据需要调整XSD。无论如何,如今我都是手工编写自己的XSD,但这一切都要归功于此应用程序。

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


4

如果您在Java世界中工作-intelliJ idea还具有广泛的xml支持,包括xsd生成和xsd生成的samle xml,并且使用插件可以获取xslt调试器。-如果以后打算使用jaxb之类的工具,则特别好。


2
这在Idea的免费社区版本中也可用。
lbalazscs


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.