Answers:
在微软XSD推理工具是一个很好的,免费的解决方案。许多XML编辑工具,例如XmlSpy(@Garth Gilmour提到)或OxygenXML Editor也具有该功能。但是,它们相当昂贵。BizTalk Server也具有XSD推断工具。
编辑:我刚刚发现了.net XmlSchemaInference类,因此,如果您使用的是.net,则应考虑
xsd.exe
在Windows 7上,目录似乎已更改。我在许多Microsoft SDKs
目录中都有它(因此,它似乎不必再依赖Visual Studio了吗?),其中一个是:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools
。我必须在包含xml的目录中运行它,以防止出现有关“路径中非法字符”的错误,但这可能是由于我的文件名太长所致。
您可以使用开源和跨平台选项:Apache的XMLBeans中的 inst2xsd 。我觉得它非常有用和容易。
只需下载,解压缩并播放(需要Java)。
董里是这里最好的选择。开源和跨平台(尽管需要Java)
从董里网站:
Trang在XML的不同模式语言之间转换。它支持以下语言
- RELAX NG(XML语法)
- RELAX NG紧凑语法
- XML 1.0 DTD
- W3C XML模式
可以将以任何受支持的模式语言编写的模式转换为任何其他受支持的模式语言,只是W3C XML Schema仅支持输出而不是输入。
Trang还可以从一个或多个示例XML文档中推断模式。
$ trang file.xml schema.xsd
。
XML schema learner
在Github上也有可用。
它可以获取多个xml文件,并从所有这些文件中提取一个通用的XSD。
sudo apt-get install php5-cli
并运行./learn --help
---我真的看不到它与用Java,Python或ruby编写的工具之间的区别:)
locality
字段的小注释:如果在XML中的多个位置使用字段名称来引用不同的元素,locality
则需要大于1的值(例如root/item
,root/something/item
引用不同的类型),则--locality 2
至少必须使用此值
如果已安装.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项目中
如果您只需要XSD,LiquidXML就会提供一个免费的版本来执行XSD,并提供一个GUI,以便您可以根据需要调整XSD。无论如何,如今我都是手工编写自己的XSD,但这一切都要归功于此应用程序。
如果您在Java世界中工作-intelliJ idea还具有广泛的xml支持,包括xsd生成和xsd生成的samle xml,并且使用插件可以获取xslt调试器。-如果以后打算使用jaxb之类的工具,则特别好。
这是一个旧线程,但是我认为发布此链接可能很有用:刚刚找到了此工具: xsd-gen从XML生成XML模式
它正是我所需要的。