【问题标题】:How automatically identify optional/required attributes/elements from XML instances?如何从 XML 实例中自动识别可选/必需的属性/元素?
【发布时间】:2012-09-20 03:15:42
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: xml xsd reverse-engineering


    【解决方案1】:

    试试QTAssistant(我与它相关联)。在工具标签下

    有一个 XSD from XMLs 命令。

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

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

    【讨论】:

    • +1 完成这项工作。你能解释一下其他类似工具不能猜到的其他事情吗?
    • 不是真的...您使用的 QTAssistant 版本中的推理引擎几乎是一个经过轻微修改的库存 .NET XSD 推理引擎;从其他人与我的比较和分享中我所知道的是,它可以同时处理多个 XML 文件。除此之外,我对其他工具的作用不是很熟悉。
    猜你喜欢
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    相关资源
    最近更新 更多