Java I';我正在尝试反序列化XML,并为某些属性获取null
我试图将下面的XML反序列化为一个对象,但其中一个值(必需)返回nullJava I';我正在尝试反序列化XML,并为某些属性获取null,java,eclipse,xml-deserialization,emf,ecore,Java,Eclipse,Xml Deserialization,Emf,Ecore,我试图将下面的XML反序列化为一个对象,但其中一个值(必需)返回null <?xml version="1.0" encoding="UTF-8"?> -<sy:config xmlns:sy="http://www.example.com/def/sy"> -<sy:configurations> -<sy:configuration property="isReq"
<?xml version="1.0" encoding="UTF-8"?>
-<sy:config xmlns:sy="http://www.example.com/def/sy">
-<sy:configurations>
-<sy:configuration property="isReq" name="ABC">
**Required**
<atom:link title="ABC Uri" xmlns:atom="http://www.w3.org/2005/Atom" rel="http://www.example.com/def//id"
href="abc/bc/def/docid"/>
</sy:configuration>
</sy:configurations>
</sy:config>
enter code here
-
-
-
**必需的**
在这里输入代码
我正在使用下面的代码来反序列化eclipse emfutil以进行反序列化,您能告诉我为什么configuration.getvalue()返回null而不是“Required”吗
private static <T extends EObject> T readEObjectFromInputStream(InputStream inputStream, String emfFileExtension,Class<T> expectedResultType) throws IOException {
org.eclipse.emf.common.util.URI emfResourceUri = org.eclipse.emf.common.util.URI
.createPlatformResourceURI(FILE_PATH + emfFileExtension, true);
Resource emfResource = new ResourceSetImpl().createResource(emfResourceUri);
emfResource.load(inputStream, null);
EObject eObject = emfResource.getContents().get(0);
T result = expectedResultType.cast(eObject);
return result;
}
private static T readEObjectFromInputStream(InputStream InputStream,字符串emfFileExtension,类expectedResultType)引发IOException{
org.eclipse.emf.common.util.URI emfResourceUri=org.eclipse.emf.common.util.URI
.createPlatformResourceURI(文件路径+emfFileExtension,true);
Resource emfResource=new ResourceSetImpl().createResource(emfResourceUri);
加载(inputStream,null);
EObject EObject=emfResource.getContents().get(0);
T结果=expectedResultType.cast(EOObject);
返回结果;
}
Eclipse论坛上的帖子提供了一个如何做到这一点的示例,并讨论了它可能不起作用的几个原因
以下是完整的示例:
try { ResourceSet resourceSet = new ResourceSetImpl();
Resource resource = resourceSet.createResource(URI.createURI("http:///My.chbasev21"));
DocumentRoot documentRoot = ChbaseV21Factory.eINSTANCE.createDocumentRoot();
CompanyDetailsType root = ChbaseV21Factory.eINSTANCE.createCompanyDetailsType();
documentRoot.setCompanyDetails(root);
resource.getContents().add(documentRoot);
//resource.save(Collections.EMPTY_MAP);
resource.save(System.out, null);
resource.save(new FileOutputStream("C:/test2.xml"), null);
}
catch (IOException exception) {
exception.printStackTrace();
}
实际上,“configuration.getvalue()”在这段代码中的位置是什么?请指定什么是
expectedResultType
,以及在expectedResultType.cast中发生了什么。您是否解决了您的问题?您可能只想澄清一下您的问题,而不是在赏金上浪费声誉。您粘贴的XML不是有效的XML—您可能是从某个GUI复制了它,并附带了一些格式。其次,为什么要使用EMF来实现这一点?为什么不仅仅是标准的JavaXML库?你会在网上找到更多关于这方面的信息,然后是关于特定于供应商的产品。