Вы можете использовать Декларативное потоковое сопоставление (DSM) Библиотека анализа потока. Вам не нужно аннотировать ваш POJO как для XML, так и для JSON.
Вы просто определяете отображение для данных, которые вы хотите извлечь из XML.
Вот отображение определения для вашего XML.
result:
path: /(AmountBlockRequest|AmountUnblockRequest) // path is regex
type: object
fields:
TargetBankVerificationNumber:
Narration:
amount:
path: amount
xml:
path: Amount
targetAccountNumber:
path: targetAccountNumber
xml:
path: TargetAccountNumber
channelCode:
path: ChannelCode
referenceCode:
path: ReferenceCode
destinationInstitutionCode:
path: DestinationInstitutionCode
targetAccountName:
path: TargetAccountName
sessionID:
path: SessionID
reasonCode:
path: ReasonCode
blockUnblockReason:
path: BlockUnblockReason
Java Код для анализа XML:
DSM dsm=new DSMBuilder(new File("path/to/mapping.yaml")).setType(DSMBuilder.TYPE.XML)..create(AmountOrAccountBlockOrUnblockRequest.class);;
// For json
//DSM dsm=new DSMBuilder(new File("path/to/mapping.yaml")).setType(DSMBuilder.TYPE.JSON)..create(AmountOrAccountBlockOrUnblockRequest.class);
AmountOrAccountBlockOrUnblockRequest result= (AmountOrAccountBlockOrUnblockRequest)dsm.toObject(xmlFileContent);
// json represntation fo result
dsm.getObjectMapper().writerWithDefaultPrettyPrinter().writeValue(System.out, object);
Вывод:
{
"amount" : "1000.00",
"targetAccountNumber" : "2222002345",
"blockUnblock" : false,
"blockUnblockReason" : null,
"sessionID" : "000001100913103301000000000001",
"reasonCode" : "0001",
"referenceCode" : "xxxxxxxxxxxxxxx",
"channelCode" : "7",
"narration" : null,
"targetBankVerificationNumber" : null,
"destinationInstitutionCode" : "000002",
"targetAccountName" : "Ajibade Oluwasegun"
}
В настоящее время сериализация не поддерживается.