任何从XML实例文档生成XSD架构的工具?

时间:2008-09-16 17:36:27

标签: xml xsd

我正在寻找一个工具,它将获取XML实例文档并输出相应的XSD架构。

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

10 个答案:

答案 0 :(得分:65)

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

编辑:我刚刚发现了.net XmlSchemaInference类,所以如果你使用.net,你应该考虑

答案 1 :(得分:54)

您可以使用开源和跨平台选项:来自Apache's XMLBeans的inst2xsd。我发现它非常有用且容易。

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

答案 2 :(得分:51)

Trang是最好的选择。开源和跨平台(虽然需要Java)

来自Trang网站:

  

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

     
      
  • RELAX NG(XML语法)
  •   
  • RELAX NG紧凑语法
  •   
  • XML 1.0 DTDs
  •   
  • W3C XML Schema
  •   
     

使用任何支持的模式语言编写的模式都可以转换为任何其他支持的模式语言,但W3C XML模式仅支持输出,不支持输入。

     

Trang还可以从一个或多个示例XML文档中推断出架构。

Download Link

答案 3 :(得分:15)

在VS2010中,如果您将XML文件加载到编辑器中,请单击XML菜单>>创建架构。

答案 4 :(得分:11)

XML schema learner上还有Github

可以使用多个xml文件从所有这些文件中提取通用XSD

答案 5 :(得分: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),然后使用{{}将xsd文件推回到工具中。 1}}标志来获取我可以在我的日常.Net项目中导入和使用的类

答案 6 :(得分:6)

如果你想要的只是XSD,LiquidXML有一个免费版本的XSD,它有一个GUI,所以如果你愿意,你可以调整XSD。无论如何,现在我手工编写自己的XSD,但这完全归功于这个应用程序。

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

答案 7 :(得分:4)

如果你在java世界工作 - intelliJ idea 也有广泛的xml支持,包括来自xsd generation的xsd generation和samle xml,并且使用插件你可以获得xslt调试器。 - 如果您计划之后使用jaxb之类的工具,那就特别好。

答案 8 :(得分:3)

Altova XmlSpy做得很好 - 您可以找到概述here

答案 9 :(得分:3)

这是一个旧线程,但我认为发布此链接可能很有用:刚刚找到此工具: xsd-gen Generate XML Schema from XML

它只是做了我需要的。