我一直在尝试将其作为独立应用程序中的最后一个步骤,以将建模程序使用的文件格式转换为EMF模型。我能够将原始格式转换为XSD,可以使用Eclipse导入程序将其手动转换为EMF模型,但是我不知道如何以编程方式执行此操作以使过程自动化。 Java命令可以正常工作,就像任何命令行语句一样可以正常工作,因为我可以从Java内部执行该语句。我花了一段时间寻找方法,尝试使用http://wiki.eclipse.org/Generating_Dynamic_Ecore_from_XML_Schema和其他各种可能的解决方案,但似乎没有任何效果。如果有人能够提供一些示例代码,说明如何从XSD文件生成.ecore和(/或?).genmodel文件,我将不胜感激,但甚至可以提供一些有关如何进行的指南。将非常有帮助。
谢谢。
最佳答案
看一下org.eclipse.xsd.ecore.XSDEcoreBuilder
类及其在Eclipse导入器向导中的使用方式。
看起来非常简单易用,您只需调用其generate
方法之一,然后返回Collection<Resource>
或Collection<EObject>
。
(编辑:在评论中回答其他问题)EPackage
类是xs:schema
的Ecore等效项,其中包含EClass
es,而xs:complexType
则是Collection<Resource>
的Ecore等效项。
以下代码片段应创建foo.ecore文件并将其保存到与源XSD相同的文件夹中。如果foo.xsd具有其他导入的XSD,它们将被掩盖在单独的.ecore文件中,因此返回类型为。
URI schemaURI = URI.createFileURI("foo.xsd");
Collection<Resource> ecoreResources = XSDEcoreBuilder.generateResources(schemaURI);
for (Resource ecoreResource : ecoreResources) {
ecoreResource.save(null);
}