我有以下用例。我需要通過網絡以某種序列化格式傳輸XText模型實例。爲此,我需要在客戶端序列化模型,將其作爲某種POST請求的主體發送,並在服務器端反序列化它。將XText模型實例序列化並反序列化爲OutputStream
當時我發出發送請求我只能訪問我的模型的對象結構。我沒有創建這個模型的文件(這將是可能的,但它會破壞我的架構的清潔並使測試非常複雜)。
我創建了下面的代碼序列化基於一些線程這裏在計算器上,並通過其他網站提供的教程模型序列化一個XTEXT - 型號
Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("xtextbin", new XMIResourceFactoryImpl());
Injector injector = Guice.createInjector(new ScenarioRuntimeModule());
Serializer serializer = injector.getInstance(Serializer.class);
System.out.println(serializer.serialize(scenario));
但是它不工作,我得到以下錯誤: com.google.inject.CreationException:吉斯創建錯誤:
1) Error injecting constructor, org.eclipse.emf.common.util.WrappedException: org.eclipse.emf.ecore.resource.impl.ResourceSetImpl$1DiagnosticWrappedException: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Ungültiges Byte 1 von 1-Byte-UTF-8-Sequenz.
問題最有可能出在XMIResourceFactoryImpl
,我不知道如何正確使用。
另一種方法可能是使用:
String serializedScenario = ModelUtils.serialize(scenario);
但我不知道如何反序列化這個連載調用的結果。然而
我的問題是更基本的,因爲上面的代碼可能是完全錯誤的做法。不幸的是,我沒有在文檔或網絡上的其他地方找到很多關於此的信息。
TL; DR: 序列化XText對象模型並將其反序列化的最佳方法是什麼?
最後又回到這個問題。場景是使用'Scenario scenario = ScenarioFactory.eINSTANCE.createScenario();'創建的。如果我嘗試這個代碼,我會爲'scenario.eResource()'獲得'null'。 – ali
我編輯了我的問題,使其更清晰。 – ali