2012-03-13 45 views
-1

我目前正在尝试派生大量XML文件的结构。我已经使用XSD.exe从其中的每一个生成了XSD,并且如预期的那样,它们在不同程度上彼此不同。结构合并XSD的工具?

我正在寻找一种工具,可以将这些模式合并为一个适用于所有这些XML文件的“superschema”。

有什么建议吗?

谢谢。

+0

如果您尝试合并您的xml文件,然后生成xsd,该怎么办? – 2012-03-13 22:39:34

回答

0

另一种方法可能是您将所有XML文件合并到1中。有支持XML本地合并的diff/merge工具。尽管如果你有n个XML文件,你将不得不在最糟糕的n-1合并中执行,因为这些工具通常一次只能合并2-3个文件。

这些工具的一些例子:

之后,你有你的 “主人” XML可以使用XSD.EXE生成 “主” 模式。

+0

如果有一种方法可以合并XML文件而不考虑不同的内容(与元素相对),那可能会起作用。我特别意识到将maxoccurs保持在最低水平。 – 2012-03-13 23:00:15

+0

第二个想法是,我可以通过编程方式进行XML合并。谢谢。 – 2012-03-13 23:11:18

0

我不知道如何有效合并,因为很容易指出一些与之相关的问题;例如,对两个(或更多)不同的XML采用相同的XPath(到一个节点);合并应该如何工作:保持两个兄弟节点;用另一个替换一个;从文本节点列出一个列表(如果适用)?在我看来,最终你会处理很多与合并有关的问题,而不是让XML自己说话。

有一个帖子here on SO非常简单,但它显示了合并方法无法处理的一种情况:如果希望的结果是有一个xsd:choice。合并一个XML中的内容,将不可避免地在输出XSD中创建一个序列。

我相信,除非让推理引擎处理XML的多个实例,否则很可能无法找到一个好的开始模型供您采用并最终快速手动调整。

我想出了一个解决方案,在运行一次太多的问题之后,快速清理将XML样本用作模型的XSD。试试this tool;有一个XSD来自XMLs命令工具选项卡,XML组。 (我是部分的,因为我写了它)。我刚刚在上面提到的帖子中尝试过,并不奇怪,它提出了相同的结构。生成的XSD使用俄罗斯娃娃创作风格,因为核心引擎基于XmlSchemaInference - 换句话说,不要责怪我:) ..

我正在改进版本,所以如果你'试用后感兴趣,请使用支持联系信息给我发一行,然后我们会从中获取。