当前位置: 首页 > 面试题库 >

如何使用EMF读取XML文件?

胥康安
2023-03-14
问题内容

EMF = Eclipse建模框架

我必须在一个课堂项目中使用EMF。我正在尝试了解如何使用EMF执行以下操作:

  1. 读取XML,
  2. 将值放入对象。
  3. 使用ORM将对象中的值持久保存到数据库中。-完成
  4. 使用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”部分,让它从您的脑海中消失。然后,我建议您执行以下操作:

  1. 创建一个空的EMF项目。
  2. 创建一个简单的Ecore文件(.ecore),或从Internet上获取它。或从任何XML Schema / UML文件导入Ecore模型。
  3. 右键单击EClass,然后单击“创建动态实例”,这将创建一个.xmi文件。
  4. 使用Eclipse打开.xmi文件,这将打开该模型的EMF编辑器。根据需要进行编辑。
  5. 检查(编辑的).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) );


 类似资料:
  • 问题内容: 我需要使用Java读取XML文件。它的内容就像 是否有特殊的阅读器/ JAR,还是应该使用 FileInputStream进行 阅读? 问题答案: 另一个建议:尝试使用Commons消化器。这使您可以使用基于规则的方法非常快速地开发解析代码。有一个教程在这里和图书馆可在这里 我也同意Brian和Alzoid的观点,因为JAXB非常适合快速启动和运行。您可以使用JDK附带的xjc绑定编译

  • 我试图从XML文件中读入一些数据,但遇到了一些问题,我的XML如下所示: 我试图将这些值作为字符串读入Java程序,到目前为止,我已经编写了以下代码: 我正在努力读取和打印id、用户名等的值。

  • 我在三个阶段阅读xml文件,在每个阶段,我对不同的元素感兴趣,基于输入参数。 使用XMLStreamReader多次读取一个xml文件的最佳方法是什么? 其中inputStream是FileInputStream实例 目前,我得到了StreamClosed异常或streamReader。当我开始第二阶段读取时,hasNext()为false。

  • 显然,是一种新的建议的HTTP请求方式,所以我尝试使用它向美味的API发出请求,它返回一个XML响应。我得到的是: 但是,它会在位上引发异常, 其他信息:无法加载文件或程序集“NewtonSoft.json,Version=4.5.0.0,Culture=Neutral,PublicKeyToken=30AD4FE6B2A6AEED”或其依赖项之一.系统找不到指定的文件。 也许我错过了一些集会,但

  • 问题内容: 我努力了: 找到错误消息: 另外,我尝试使用并得到了相同的错误消息,甚至使用beanshell脚本也是如此: 问题答案: 尝试以下方法: 将Beanshell Sampler添加到您的测试计划 将以下代码放入采样器的“脚本”区域: 将调试采样器和查看结果树侦听器添加到您的测试计划 运行测试 确保Beanshell Sampler为绿色并且已设置变量。如果不是,请查看 jmeter.lo