我一直在尝试将此作为独立应用程序的最后阶段,以将建模程序使用的文件格式转换为 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
的 Ecore 等价物秒。
以下代码片段应创建一个 foo.ecore 文件并将其保存到与源 XSD 相同的文件夹中。如果 foo.xsd 有其他导入的 XSD,它们将被转换为单独的 .ecore 文件,因此返回类型为 Collection<Resource>
.
URI schemaURI = URI.createFileURI("foo.xsd");
Collection<Resource> ecoreResources = XSDEcoreBuilder.generateResources(schemaURI);
for (Resource ecoreResource : ecoreResources) {
ecoreResource.save(null);
}
关于java - 如何以编程方式从 XSD 架构生成 EMF 模型(.ecore、.genmodel)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1232663/