如何从XML实例中自动识别可选/必需的属性/元素?

如何从XML实例中自动识别可选/必需的属性/元素?,xml,xsd,reverse-engineering,Xml,Xsd,Reverse Engineering,我们有数百个没有预先定义XML模式(XSD)的XML文件。我能够用一个工具(IntelliJ Idea)从这些文件中的一个生成XSD,但它不够聪明,无法识别哪些元素和属性是可选的,哪些是必需的 自动化的一种方法是使用以下启发式方法对多个XML文件中的XSD进行反向工程: 如果属性/元素在某些情况下出现,而在另一些情况下没有出现,则该属性/元素是可选的。否则,它是必需的(use=“required”/minOccurs=1) 显然,如果XML具有足够的代表性,那么启发式方法也适用于单个XML文件

我们有数百个没有预先定义XML模式(XSD)的XML文件。我能够用一个工具(IntelliJ Idea)从这些文件中的一个生成XSD,但它不够聪明,无法识别哪些元素和属性是可选的,哪些是必需的

自动化的一种方法是使用以下启发式方法对多个XML文件中的XSD进行反向工程:

如果属性/元素在某些情况下出现,而在另一些情况下没有出现,则该属性/元素是可选的。否则,它是必需的
use=“required”
/
minOccurs=1

显然,如果XML具有足够的代表性,那么启发式方法也适用于单个XML文件

例如,考虑到以下输入,
flightNumber
将被视为可选:

   <list>
     <carrier name="BA" flightNumber="213" />
     <carrier name="CY" />
   </list>

您知道任何生成XSD并识别属性/元素是否可选的工具吗?

试试(我与之相关)。在“工具”选项卡下

有一个XSD from XMLs命令

您的XML文件应全部位于一个文件夹中。从对话框中,您将不得不选择生成XSD(S)时要考虑的对象。XSD将在同一文件夹中生成并为您加载


但是,我还没有尝试过数百个XML文件。如果您遇到任何问题,请通过我们网站上的支持地址告诉我。下载免费试用,但需要注册。

+1完成此工作。你能解释一下它能猜到其他类似工具不能猜到的其他东西吗?不太可能。。。您正在使用的QTAssistant版本中的推理引擎几乎是一个稍加修改的stock.NET XSD推理引擎;从其他人与我比较和分享的内容中我所知道的是,它可以同时处理多个XML文件。除此之外,我不太熟悉其他工具的功能。