2

EMF を使用して、XSD ベースのアクセス関数を生成しました。生成された例で、ディスク ファイルから入力をロードする方法を確認できました。ただし、解析したい XML は文字列に格納されています。文字列をファイルにダンプしてから読み戻さずに続行できる方法はありますか?

4

1 に答える 1

3

以下はメソッドの例です。modelString と、xml を解析して EObject を返す ECorePackage インスタンスを受け取ります。

public static EObject loadEObjectFromString(String myModelXml, EPackage ePackage) throws IOException { 
    // Create a ResourceSet
    ResourceSet resourceSet = new ResourceSetImpl();
    // register XMIRegistryResourceFactoryIml
    resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put
    (Resource.Factory.Registry.DEFAULT_EXTENSION, 
     new XMIResourceFactoryImpl());
     // register your epackage to the resource set so it has a reference to your ecore
     // you can get an instance to your epackage by calling YourEPackageClass.getInstace();
    resourceSet.getPackageRegistry().put(ePackage.getNsURI(), ePackage);
    Resource resource = resourceSet.createResource(URI.createURI("*.modelextension"));
    resource.load(new URIConverter.ReadableInputStream(myModelXml), null);
    // return the root model object and there you have it, all you need is to
    // cast it to the right EObject based on your model 
    return resource.getContents().get(0);
}
于 2012-11-18T04:49:25.550 に答える