如何使用EMF读取XML文件?
EMF = Eclipse Modeling Framework
我必须在我的一个班级项目中使用EMF.我试图了解如何使用EMF执行以下操作: >阅读XML, 我需要使用以下所有内容:EMF(不知道是什么)和JPA(DONE). 我使用过JAXB,我知道,这可以使用JAXB完成,但是(EMF == JAXB)怎么办?! 我使用EMF创建了许多java类,但是它们有很多!我在哪里实现读/写方法以及如何运行EMF项目? 谢谢 UPDATE1 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项目. EMF支持读取/写入XML Schema元模型(即XSD文件),以便将它们转换为Ecore元模型,但不支持符合此类模式的XML文件(甚至不是Ecore),除非这些文件采用XMI格式. 要将EMF模型保存到关系数据库中,请参阅: 我正在使用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) ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |