Я пытаюсь десериализовать XML и получаю null для некоторых атрибутов - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь десериализовать приведенный ниже 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" 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;
    }

1 Ответ

0 голосов
/ 29 июня 2020

В этом сообщении на форумах 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();
        }
...