加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何使用EMF读取XML文件?

发布时间:2020-12-16 07:58:15 所属栏目:百科 来源:网络整理
导读:EMF = Eclipse Modeling Framework 我必须在我的一个班级项目中使用EMF.我试图了解如何使用EMF执行以下操作: 阅读XML, 将值获取到对象中. 使用ORM将对象中的值持久保存到数据库. – 完成 使用ORM从数据库获取数据并生成XML. 我需要使用以下所有内容:EMF(不
EMF = Eclipse Modeling Framework

我必须在我的一个班级项目中使用EMF.我试图了解如何使用EMF执行以下操作:

>阅读XML,
>将值获取到对象中.
>使用ORM将对象中的值持久保存到数据库. – 完成
>使用ORM从数据库获取数据并生成XML.

我需要使用以下所有内容:EMF(不知道是什么)和JPA(DONE).

我使用过JAXB,我知道,这可以使用JAXB完成,但是(EMF == JAXB)怎么办?!

我使用EMF创建了许多java类,但是它们有很多!我在哪里实现读/写方法以及如何运行EMF项目?

谢谢

UPDATE1
暗示
http://www.eclipsezone.com/eclipse/forums/t58829.html

UPDATE2

我有架构,我使用.xsd生成了模型代码.现在我在从XML文件中读取数据时遇到了问题.

EMF使用(默认的,最流行的方式)XMIResourceImpl序列化数据模型,XMIResourceImpl严格使用XMI格式,而不是自定义XML结构.

有关EMF及其用例的文章,请参阅http://eclipsedriven.blogspot.com/.

我同意其他的回答者说EMF可能不是你想要的.

如果我真的想要使用自定义XML结构的EMF(即不是XMI),我可能会使用JAXB来编组/解组我的EMF对象(EObjects).

因此,EMF与JAXB不同,它们有不同的目的和目标.事实上,你可能会以某种方式结合EMF和JAXB.我从来没有尝试过,但似乎有一些有效的用例. (正如我上面所说的,用于将EMF对象编组到/从XML解组/解组)

要了解EMF,您需要切换范例.首先删除“XML”部分,让它离开你的脑海.然后我建议你做以下事情:

>创建一个空的EMF项目.
>创建一个简单的Ecore文件(.ecore),或从Internet获取它.或者从任何XML Schema / UML文件导入到Ecore模型中.
>右键单击EClass,然后“创建动态实例”,这将创建一个.xmi文件.
>使用Eclipse打开.xmi文件,这将打开该模型的EMF编辑器.根据需要进行编辑.
>检查(编辑过的).xmi文件的内容.您将看到格式与Ecore模型完全一致.您将无法更改/自定义模型< - >的映射. XMI文件,因为顾名思义,XMIResourceImpl只读取/保存XMI文件(恰好在XML之上实现),但它不读取/保存任意XML格式.

EMF支持读取/写入XML Schema元模型(即XSD文件),以便将它们转换为Ecore元模型,但不支持符合此类模式的XML文件(甚至不是Ecore),除非这些文件采用XMI格式.

要将EMF模型保存到关系数据库中,请参阅:
http://eclipsedriven.blogspot.com/2010/12/persisting-emf-objects-to-rdbms-with.html

我正在使用Teneo. (以及可选的CDO)

关于“XML”,如果您坚持使用XMI并对其满意,EMF将使您的生活更轻松,因为您不需要进行任何映射(与JAXB不同).缺点是我们的对象必须是EMF对象.

EMF对象是由EMF生成并实现EObject并直接或间接扩展EObjectImpl的对象.你通常不想手工编写EMF对象,这将是一件苦差事.另一方面,JAXB“对象”通常是纯域对象POJO,并且没有JAXB的额外要求.请注意,与JAXB不同,EMF对象不是POJO.这解释了EMF和JAXB之间的另一个不同目标.他们的重叠比你想象的要少.

从XMI(而不是XML)读取非常简单:

XMIResource resource = new XMIResourceImpl(URI.create("file:/path/to/mymodel.xmi"));
resource.load(null);
System.out.println( resource.eContents().get(0) );

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读