两个不同XML标记的相同pojo对象
我有两个这样的XML。一是两个不同XML标记的相同pojo对象,xml,jaxb,Xml,Jaxb,我有两个这样的XML。一是 <?xml version="1.0" encoding="UTF-8"?> <Message> <VersNbr>1</VersNbr> <SubmrId>ABC</SubmrId> <MsgSeqNbr>00065</MsgSeqNbr> <CreateDt>20180528</CreateDt> <CreateTm>172428&l
<?xml version="1.0" encoding="UTF-8"?>
<Message>
<VersNbr>1</VersNbr>
<SubmrId>ABC</SubmrId>
<MsgSeqNbr>00065</MsgSeqNbr>
<CreateDt>20180528</CreateDt>
<CreateTm>172428</CreateTm>
<TravelBatch>
<BtchSeqNbr>00000001</BtchSeqNbr>
<ProviderNm>Travel</ProviderNm>
<TrvlBtchCurrCd>GBP</TrvlBtchCurrCd>
</TravelBatch>
</Message>
其次是
<?xml version="1.0" encoding="UTF-8"?>
<Message>
<VersNbr>2</VersNbr>
<SubmrId>Xyz</SubmrId>
<MsgSeqNbr>000460</MsgSeqNbr>
<CreateDt>20180528</CreateDt>
<CreateTm>172428</CreateTm>
<RefBatch>
<BtchSeqNbr>00000001</BtchSeqNbr>
<ProviderNm> Travel</ProviderNm>
<TrvlBtchCurrCd>GBP</TrvlBtchCurrCd>
</RefBatch>
</Message>
我的pojo是
@XmlRootElement(name = "Message")
public class Message {
@XmlElement(name = "VersNbr")
protected int versNbr;
@XmlElement(name = "SubmrId")
protected String submrId;
@XmlElement(name = "MktCode")
protected String mktCode;
@XmlElement(name = "FileStatus")
protected String fileStatus;
@XmlElement(name = "MsgSeqNbr")
protected String msgSeqNbr;
@XmlElement(name = "CreateDt")
protected String createDt;
@XmlElement(name = "CreateTm")
protected String createTm;
@XmlElement(name = "ExprDt")
protected String exprDt;
@XmlElement(name = "HubTimeStamp")
protected String hubTimeStamp;
protected List<TravelBatch> travelBatch;
@XmlElement(name = "SettleBatch")
protected List<SettleBatch> settleBatch;
@XmlElement(name = "MessageTrailer", required = true)
protected MessageTrailer messageTrailer;
protected String isValidRec;
//getters and setters
我们能用同一个tarvelBatch对象处理TravelBatch和RefBatch标记吗?
我尝试使用@XmlElements,给出了两个单独的@XMLElement,但它没有按预期工作。
提前感谢。在xmls中唯一不同的是一些批处理细节的周围元素。因此,您可以创建如下所示的新类:
@XmlAccessorType(XmlAccessType.FIELD)
public class BatchDetails {
@XmlElement(name = "BtchSeqNbr")
private String batchSequenceNumber;
@XmlElement(name = "ProviderNm")
private String providerName;
@XmlElement(name = "TrvlBtchCurrCd")
private String travelBatchCurrencyCode;
}
然后,为了处理这两个XML,您的根类将如下所示:
@XmlRootElement(name = "Message")
public class Message {
@XmlElement(name = "VersNbr")
protected int versNbr;
@XmlElement(name = "SubmrId")
protected String submrId;
@XmlElement(name = "MktCode")
protected String mktCode;
@XmlElement(name = "FileStatus")
protected String fileStatus;
@XmlElement(name = "MsgSeqNbr")
protected String msgSeqNbr;
@XmlElement(name = "CreateDt")
protected String createDt;
@XmlElement(name = "CreateTm")
protected String createTm;
@XmlElement(name = "ExprDt")
protected String exprDt;
@XmlElement(name = "HubTimeStamp")
protected String hubTimeStamp;
@XmlElements({
@XmlElement(name = "RefBatch", type = BatchDetails.class),
@XmlElement(name = "TravelBatch", type = BatchDetails.class)
})
protected BatchDetails batchDetails;
protected String isValidRec;
}
请注意带有@XmlElements注释的batchDetails字段