我有一个包含多个 XML 节点的文本文件。我希望将每个节点作为 EMF 对象复制/转换并粘贴到 Eclipse 编辑器中(通过在文本文件中使用Ctrl+并在 Eclipse 编辑器中使用+ )。但我无法粘贴到 Eclipse 编辑器中。你能帮帮我吗?CCtrlV
问问题
509 次
1 回答
0
我有一个类似的问题。您可以读取您的 XML 模型并将其转换为 XMI 模型。这样,您需要将下一个代码实现到您的 EMF 项目中。我创建了一个新类,并生成了一个包含以下代码的 main 方法:
//Generate your URI
ResourceFactoryImpl factory = new ResourceFactoryImpl();
URI sourceURI = URI.createURI("your xml path");
Resource loadResource = (ResourceImpl)factory.createResource(sourceURI);
System.out.println(sourceURI.path());
//Add loading options
Map<String, Boolean> options = new HashMap<String, Boolean>();
options.put(XMLResource.OPTION_SUPPRESS_DOCUMENT_ROOT, true);
//Load XML
loadResource.load( options);
//Create XMI output
URI targetURI = URI.createURI("your xmi path");
Resource resourceOut = new ResourceImpl(targetURI);
//Generating your EObjects from XML model
EList listObj = loadResource.getContents();
EObject obj = (EObject) listObj.get(0);
resourceOut.getContents().add(obj);
resourceOut.save(options);
请记住,您需要从您的 ecore 模型注册您的 EPackages。因此,右键单击您的 .ecore 元模型并选择“Register EPackages”选项。如果此步骤出现问题,您将获得 org.eclipse.emf.ecore.resource.Resource$IOWrappedException: Package with uri ' http://something.com ' not found。(xml 路径)。
综上所述:
- 在您的主要方法中调用一个方法,该方法包含所提供的代码。
- 注册您的 EPackages。
- 如果您获得异常,请将 URI 数据解析为 XML。
PD:这篇文章中的代码最初是由@victormpav 创建的。我添加了一些修改。
于 2014-06-03T01:43:47.260 回答