複数の XML ノードを含むテキスト ファイルがあります。各ノードを EMF オブジェクトとしてコピー/変換し、Eclipse エディターに貼り付けたい (テキスト ファイルでCtrl+を使用し、Eclipse エディターで+を使用)。しかし、Eclipse エディターに貼り付けることができません。助けてください。CCtrlV
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 パス)。
結論は:
- 提示されたコードを含むメソッドをメイン メソッドに呼び出します。
- EPackage を登録します。
- 例外を取得した場合は、URI データを XML に解決します。
PD: この投稿に示されているコードは、@victormpav によって最初に作成されました。いくつかの変更を加えます。
于 2014-06-03T01:43:47.260 に答える