0

複数の XML ノードを含むテキスト ファイルがあります。各ノードを EMF オブジェクトとしてコピー/変換し、Eclipse エディターに貼り付けたい (テキスト ファイルでCtrl+を使用し、Eclipse エディターで+を使用)。しかし、Eclipse エディターに貼り付けることができません。助けてください。CCtrlV

4

1 に答える 1

0

同様の質問がありました。XML モデルを読み取り、それを XMI モデルに変換できます。そのようにして、次のコードを EMF プロジェクトに実装する必要があります。新しいクラスを作成し、次のコードを含むメイン メソッドを生成します。

    //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 モデルから EPackage を登録する必要があることに注意してください。したがって、.ecore メタモデルを右クリックし、[Register EPackages] オプションを選択します。このステップで問題が発生した場合は、org.eclipse.emf.ecore.resource.Resource$IOWrappedException: Package with uri ' http://something.com ' not found. が発生します。(xml パス)。

結論は:

  1. 提示されたコードを含むメソッドをメイン メソッドに呼び出します。
  2. EPackage を登録します。
  3. 例外を取得した場合は、URI データを XML に解決します。

PD: この投稿に示されているコードは、@victormpav によって最初に作成されました。いくつかの変更を加えます。

于 2014-06-03T01:43:47.260 に答える