【发布时间】:2010-09-09 15:31:31
【问题描述】:
我正在寻找一种工具,它可以获取 XML 实例文档并输出相应的 XSD 架构。
我当然认识到,与手动创建架构相比,生成的 XSD 架构会受到限制(它可能无法处理可选或重复元素或数据约束),但它至少可以作为一个快速起点.
【问题讨论】:
我正在寻找一种工具,它可以获取 XML 实例文档并输出相应的 XSD 架构。
我当然认识到,与手动创建架构相比,生成的 XSD 架构会受到限制(它可能无法处理可选或重复元素或数据约束),但它至少可以作为一个快速起点.
【问题讨论】:
Microsoft XSD inference tool 是一个很好的免费解决方案。许多 XML 编辑工具,例如 XmlSpy(@Garth Gilmour 提到)或 OxygenXML Editor 也具有该功能。不过,它们相当昂贵。 BizTalk Server 也有一个 XSD 推断工具。
编辑:我刚刚发现了 .net XmlSchemaInference 类,所以如果你正在使用 .net,你应该考虑一下
【讨论】:
xsd.exe 已更改。我在许多 Microsoft SDKs 目录中都有它(所以它似乎不再依赖于 Visual Studio?),其中一个:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools。我必须在包含 xml 的目录中运行它,以防止出现有关“路径中的非法字符”的错误,但这可能是由于我拥有的长文件名。
您可以使用开源和跨平台选项:来自Apache's XMLBeans 的 inst2xsd。我觉得它非常有用且简单。
只需下载、解压缩和播放(需要 Java)。
【讨论】:
Trang 是这里的最佳选择。开源和跨平台(虽然需要Java)
来自董里网站:
Trang 在 XML 的不同模式语言之间进行转换。它支持以下语言
- RELAX NG(XML 语法)
- RELAX NG 紧凑语法
- XML 1.0 DTD
- W3C XML 架构
用任何受支持的模式语言编写的模式都可以转换为任何其他受支持的模式语言,但 W3C XML 模式仅支持输出,不支持输入。
Trang 还可以从一个或多个示例 XML 文档中推断出架构。
【讨论】:
$ trang file.xml schema.xsd。
在 VS2010 中,如果您将 XML 文件加载到编辑器中,请单击 XML 菜单 >> Create Schema。
【讨论】:
还有XML schema learner 可以在Github 上找到。
它可以获取多个 xml 文件并从所有这些文件中提取一个通用 XSD。
【讨论】:
sudo apt-get install php5-cli 安装cli php 并运行./learn --help --- 我看不出它与用java、python 或ruby 编写的工具之间的区别:)跨度>
locality 字段的小注释:如果在 XML 中的多个位置使用字段名称来引用 不同 元素,则大于 1 的 locality 值是需要,例如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 生成的 xml 示例,并且通过插件您可以获得 xslt 调试器。 - 如果您打算之后使用 jaxb 等工具,那就太好了。
【讨论】:
Altova XmlSpy 做得很好 - 你可以找到概述here
【讨论】:
这是一个旧线程,但我认为发布此链接可能会很有用:刚刚找到这个工具: xsd-gen Generate XML Schema from XML
它只是做了我需要的。
【讨论】: