使用EMF加载XML文件时“找不到包含uri'null'的包”

时间:2018-01-21 06:18:37

标签: java xml eclipse-emf emf eclipse-emf-ecore

我正在尝试使用EMF加载XML文件,我使用以下代码在XMLArtefactAdapter.java中执行此操作:

构造():

module.exports = function(app, db) {
    app.post('/notes', (req, res) => 
    {
    console.log(req.body)
    res.send('Hello')
  });
};

parse()方法:

ResourceSet set = new ResourceSetImpl();
//registering factory
set.getResourceFactoryRegistry()
  .getExtensionToFactoryMap()
  .put
    (Resource.Factory.Registry.DEFAULT_EXTENSION,new XMLResourceFactoryImpl());

我正在从我的Main类执行此代码片段:

//parsing XML
try {
        String absolutePath = file.getAbsolutePath();
        URI uri = URI.createFileURI(absolutePath);
        Resource resource = resourceSet.createResource(uri);
        resource.load(Collections.EMPTY_MAP);

        System.out.println("LOADED");

    } catch (IOException e) {
        System.out.println(e.toString());
    }

但是,我在运行此代码时遇到错误。

Path path = Paths.get("C:\\Users\\Srijani\\Desktop\\book.xml");
XMLArtefactAdapter xmlAdapter = new XMLArtefactAdapter(path);
xmlAdapter.parse();

请注意以下事项: 我的Plugin.xml

org.eclipse.emf.ecore.resource.Resource$IOWrappedException: Package with uri 'null' not found. (file:/C:/Users/Srijani/Desktop/plugin.xml, 3, 9)

知道为什么会这样吗? 在此先感谢!

1 个答案:

答案 0 :(得分:1)

EPackage uri是EPackage的一种公共标识符。它不应该是日食uri。

通常,名称空间URI是一个http url,提供有关EPackage提供程序,ePackage名称和版本的一些基本信息。 例如:

  <extension point="org.eclipse.emf.ecore.generated_package">
     <package
        uri="http://www.eclipse.org/emf/2002/Ecore"
        class="org.eclipse.emf.ecore.EcorePackage"
        genModel="model/Ecore.genmodel"/>
  </extension>

你应该:

  1. 使用EPackage的标识符更改您的EPackage nsUri,
  2. 重新生成EMF代码,
  3. 并合并您的plugin.xml和plugin.xml_gen文件以同步您的nsURI值。