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

时间:2012-09-19 18:09:30

标签: xml xsd reverse-engineering

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

自动化的一种方法是使用以下启发式从多个XML文件中反向设计XSD:

  

属性/元素是可选use="optional" / minOccurs=0),如果在某些情况下它发生而在其他情况下不发生。否则,必需use="required" / minOccurs=1)。

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

例如,根据以下输入,flightNumber将被视为可选项:

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

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

1 个答案:

答案 0 :(得分:1)

尝试QTAssistant(我与之相关)。在 工具 标签下

enter image description here

有一个 XSD from XMLs 命令。

enter image description here

您的XML文件应该全部在一个文件夹中。在对话框中,您必须选择要在生成XSD时考虑的那些。 XSD将在同一文件夹中生成并为您加载。

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