1

我正在使用 EMF,并从 XSD 创建了我的 ecore。

我注意到编辑器保存的 XML 具有元素 DocumentRoot,它不是我原始 XSD 的一部分。我可以不生成它,所以它不会出现在编辑器的 XML 文件中吗?

我愿意

4

1 回答 1

0

如果您的架构中没有全局元素或属性,那么您将不会获得文档根目录。但是,在这种情况下,您的架构当然没有指定一种编写文档的方式,它只是定义了可以在另一个架构中使用的类型和内容。某些模式需要声明一个全局元素才能指定文档的根。

来源:dev.eclipse.org

如果您的模型有一个文档根并且您在加载期间使用扩展元数据选项,则会创建一个文档根。文档根具有对应于每个全局元素的特性,并且在反序列化时实际设置的文档根的特定特性将与序列化中出现的根元素完全对应。在文档根实例上使用 EObject.eContents().get(0) 将返回文档根的子 EObject,并且该子的 eContainmentFeature() 将对应于您的全局元素。

请记住,元素对应于类型对应于分类器的特征。由于 EClass 对应于复杂类型,因此拥有 EClass 的实例(复杂类型)不足以说明应该序列化为什么元素;这是由 eContainmentFeature() 决定的,这就是为什么需要文档根来指定根元素的原因,因为没有 eContainer 就不可能有有意义的 eContainmentFeature()。

来源:dev.eclipse.org

试试邮件列表

于 2009-11-10T06:26:31.290 回答