如何使用EMF读取XML文件?
问题内容:
EMF = Eclipse建模框架
我必须在一个课堂项目中使用EMF。我正在尝试了解如何使用EMF执行以下操作:
- 读取XML,
- 将值放入对象。
- 使用ORM将对象中的值持久保存到数据库中。-完成
- 使用ORM从数据库获取数据并生成XML。
我需要使用EMF(不知道是什么)和JPA(完成)来完成所有这些操作。
我使用过JAXB,我知道,可以使用JAXB完成,但是(EMF == JAXB)怎么样?
我使用EMF创建了许多Java类,但是它们太多了!我在哪里实现读/写方法,以及如何运行EMF项目?
谢谢
UPDATE1 提示
http://www.eclipsezone.com/eclipse/forums/t58829.html
更新2
我有架构,并且已经使用.xsd生成了模型代码。现在,我在从XML文件读取数据时遇到问题。
问题答案:
EMF使用XMIResourceImpl(默认,最流行的方式)序列化数据模型,该模型 严格使用XMI格式,而不是自定义XML结构 。
有关EMF及其使用案例的文章,请参见http://eclipsedriven.blogspot.com/。
我同意其他答复者的观点,EMF可能不是您想要的。
如果我真的想使用带有自定义XML结构的EMF(即非XMI),则可能会使用JAXB来编组/解组我的EMF对象(EObjects)。
因此,EMF与JAXB不同,它们具有不同的目的和目标。实际上,您可能可以以某种方式组合EMF和JAXB。我从未尝试过,但似乎存在有效的用例。(如上所述,用于将EMF对象编组到XML或从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) );