java - 如何以编程方式从 XSD 架构生成 EMF 模型(.ecore、.genmodel)?

标签 java xsd eclipse-emf

我一直在尝试将此作为独立应用程序的最后阶段,以将建模程序使用的文件格式转换为 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/

相关文章:

java - 在 Java 中创建带有子节点的 SOAP 消息

web-services - 如何使用 EMF 类使用 Web 服务?

java - 是否可以将 java.util.logging 配置为使用压缩日志文件?

java - 在Java中转换日期格式的问题

xml - 验证属性中的空字符串

java - 抛出异常形式覆盖方法,没有在组织方法接口(interface)上定义的异常

eclipse - Eclipse/IntelliJ/Webapp 的图形工作流程编辑器插件

java - 比较数组之间的所有元素并返回所有可能的匹配项

java - Android Studio - java.lang.NoClassDefFoundError

c# - 对错误消息 "invalid XPath for selector or field"感到困惑