我正在寻找一种工具,可以将一个XML实例文档转换成相应的XSD模式。
我知道生成的XSD模式与手动创建的模式相比存在局限性(它可能无法处理可选或重复元素,或数据约束),但至少可以作为快速起点。
Microsoft XSD推断工具 是一个好的,免费的解决方案。许多XML编辑工具,例如XmlSpy(由@Garth Gilmour提到)或OxygenXML Editor也具有该功能。然而它们相当昂贵。BizTalk Server也有一个XSD推断工具。
编辑:我刚刚发现了.net XmlSchemaInference 类,所以如果您在使用.net,您应该考虑使用它。
在VS2010中,如果您将一个XML文件加载到编辑器中,请单击XML菜单>>创建架构。
这里还有一个名为XML Schema Learner
的工具,可以在Github上获得。
它可以接受多个xml文件并从所有这些文件中提取出一个通用的XSD模式。
sudo apt-get install php5-cli
安装CLI PHP,然后运行./learn --help
命令。我并不真正看出它与用Java、Python或Ruby编写的工具有什么区别 :) - edorianlocality
字段的小注释:如果一个字段名在XML中被多次引用,且这些引用指向不同的元素,则需要更大的locality
值,例如root/item
和root/something/item
指向不同类型,则至少需要--locality 2
。 - Shadi如果您已经安装了.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 (或 CS) /o:<your path>
标志将 xsd 文件重新传回工具,以获取可导入并用于日常 .Net 项目中的类。
xsd.exe
。我发现它在许多Microsoft SDKs
目录中(因此似乎不再必须依赖于Visual Studio?),其中包括这个目录:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools
。 为了避免出现“路径中有非法字符”的错误,我必须在包含xml文件的目录中运行它,但这可能是由于我的文件名太长所致。 - Yahoo SeriousC:\ Program Files(x86)\ Microsoft SDKs \ Windows
来找到我的Windows-10上的xsd.exe! - joedotnot