3

我在 xsd 文件中有一个架构。偶尔会创建一个新版本的架构,我需要更新我的 .ecore(和 .genmodel)。如何更新它们,而不删除它们并重新生成它们。我对 ecore 进行了一些手动修改,我想保留这些修改。

我愿意。

4

4 回答 4

3

使用 *.genmodel 上的 Reload... 操作根据 *.xsd 的新版本更新 *.ecore。

于 2009-08-10T11:02:32.980 回答
1

并且不要直接更改 .ecore。使用 ecore:架构中的注释。http://www.eclipse.org/modeling/emf/docs/overviews/XMLSchemaToEcoreMapping.pdf

于 2009-08-10T11:08:21.037 回答
0

您可以使用上下文菜单选项重新生成。要保留您的修改:

  • 如果有一个在名称中添加了“Gen”的方法——例如除了setWhatever之外的setWhateverGen——新的代码将被生成到“Gen”方法中。所以不要管“Gen”方法,这样它就可以被覆盖,然后从非Gen方法中调用它,你可以修改它。
  • 所有生成的方法都用@generated注释。如果你添加“NOT”—— @generated NOT——它不会被覆盖。

所有其他内容应合并。继续实验——这就是版本控制的用途......

于 2009-08-10T07:42:56.440 回答
0

我从未尝试过,但XSD 常见问题解答是这样说的:

JAXB 在给定 XML Schema 的情况下生成一个简单的 Java API,它本质上是使用黑盒设计来实现的。EMF 在给定 XML Schema 的情况下生成 Ecore 模型,然后使用基于模板的生成器技术生成丰富的 Java API(手写质量)。可以定制 XML Schema 到 Ecore 的转换,可以定制用于生成 Java API 的模板,并且可以定制生成的 Java API。生成器支持合并重新生成,以便保留您的手写更改。换句话说,EMF 更加丰富和灵活,并且支持更广泛的 XML Schema 子集(特别是在 2.0 中,将支持通配符和混合内容)。

如果我是你,我会尝试一些实验来看看这个过程的效果如何,以及实际的限制是什么。

于 2009-08-10T00:53:59.343 回答