我正在编写一些 eclipse emf 代码,并想打印 EObject 的内容(而不是将其存储到磁盘)。
这是我尝试的:
public static void print(EObject obj) {
Resource eResource = obj.eResource();
try {
eResource.save(System.out, null);
} catch (IOException e) {
e.printStackTrace();
}
}
但这给出了 NullPointerException。我已经尝试过这个:
public static void print(EObject obj) {
ResourceSet resourceSet = new ResourceSetImpl();
resourceSet.getResourceFactoryRegistry().getProtocolToFactoryMap()
.put("*", new XMIResourceFactoryImpl());
Resource resource = resourceSet.createResource(URI.createURI("dummyfile.xml"));
resource.getContents().add(obj);
try {
resource.save(System.out, null);
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
这行得通,但是如果不指定虚拟 URI 就不能打印到屏幕上吗?