【问题标题】:Using ResourceSet to create a file使用 ResourceSet 创建文件
【发布时间】:2016-01-28 00:31:21
【问题描述】:

我是 Java 新手,目前正在尝试使用 Eclipse 中的 EMF 建模框架中的 ResourceSetResourceFactory。我一直在尝试在文件系统中创建一个带有 xml 扩展名的新文件。我的代码如下所示:

ResourceSet resourceSet =new ResourceSetImpl();
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("arxml", new XMIResourceImpl());

URI uri =URI.createURI("D:/User/file.xml");
Resource res = resourceSet.createResource(uri);

try{
    resource.save(null);
    java.lang.System.out.println("success");
} catch (IOException e){
    java.lang.System.out.print("no");
}  

但由于某种未知原因,我没有看到在文件系统中创建任何file.xml。我一直在尝试解决这个问题很长时间,但还没有结果。有人可以帮我吗?

【问题讨论】:

    标签: java xml eclipse emf


    【解决方案1】:

    此示例完全错误:URI 定义了 ecore 元数据中资源的命名空间,而不是序列化资源的实际位置。通常 URI 来自您的 Ecore 模型定义。实际上,您需要将 OutputStream 传递给 Resource.save() 而不是 null。你还需要给你的Resource添加一些内容,否则序列化的XMI会是空的。

    例子:

     ResourceSet resourceSet = new ResourceSetImpl();
     resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("arxml", new XMIResourceImpl());
    
     URI uri = URI.createURI("http://example.myorganization.com/");
     Resource res = resourceSet.createResource(uri);
    
     // TODO add some content here
     // res.getContents().add(...)
    
     try{
        resource.save(new FileOutputStream("D:/User/file.xml"));
        java.lang.System.out.println("success");
    
     } catch (IOException e){
       java.lang.System.out.print("no");
     }  
    

    这只是一个例子。您需要定义您的 Ecore 模型并生成所有必需的代码以使用您的模型。

    【讨论】:

      【解决方案2】:

      尝试使用URI.createFileURI 代替URI.createURI 创建URI。创建的 URI 将映射到文件。我几乎可以肯定 XML 扩展名自动关联到 XMLResourceImpl,所以它应该是 XML 格式。

      另外,你注册了一个XMIResourceImpl,扩展名为arxml,但你的文件扩展名为xml,所以你不会使用你注册的资源(基本上,你表达的映射在你的sn-p中是没有用的)。如果您想要 XMI 而不是 XML,请更改文件扩展名或覆盖已注册的 XML 扩展名或将 * 注册为文件扩展名(将所有扩展名映射到 XMIResourceImpl

      【讨论】:

        猜你喜欢
        • 2018-06-17
        • 2018-07-29
        • 2015-10-26
        • 2020-11-11
        • 2013-11-28
        • 2018-02-07
        • 1970-01-01
        • 1970-01-01
        • 2012-03-02
        相关资源
        最近更新 更多