[英]Parsing XML web request with sub-element via @RequestBody
我需要在Spring Boot應用程序中解析此類XML文檔:
<Transaction id="{ID}" vs="{VS}" uniq="{UNIQ}">
<Data field1="{VAL1}" field2="{VAL2}" />
</Transaction>
這是我的@RestController
終結點方法
@RequestMapping(value = "/transaction", method = RequestMethod.POST)
public ApiClient transaction(@RequestBody TransactionRequest transactionRequest) {
LOGGER.debug(transactionRequest);
return null;
}
和Transaction
類別:
@XmlRootElement(name = "Transaction")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlSeeAlso(TransactionRequestData.class)
public class TransactionRequest {
@XmlElement(name = "id")
private long id;
@XmlElement(name = "vs")
private String vs;
@XmlElement(name = "uniq")
private String uniq;
@XmlElement(name = "data")
private TransactionRequestData data;
}
和TransactionRequestData
@XmlRootElement(name = "Data")
@XmlAccessorType(XmlAccessType.FIELD)
public class TransactionRequestData {
@XmlElement(name = "field1")
private String field1;
public String getField1() {
return field1;
}
public void setField1(String field1) {
this.field1 = field1;
}
}
但這僅綁定了Transaction
元素數據,而沒有Data
元素。
有沒有辦法解析子元素?
id,vs,uniq屬性是您所用的xml屬性。
正確將@XmlElement批注和@XmlAttribute更改為TransactionRequest pojo的屬性。
使用以下內容:
@XmlRootElement(name = "Transaction")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlSeeAlso(TransactionRequestData.class)
public class TransactionRequest {
@XmlAttribute(name = "id")
private long id;
@XmlAttribute(name = "vs")
private String vs;
@XmlAttribute(name = "uniq")
private String uniq;
@XmlElement(name = "data")
private TransactionRequestData data;
....getters & setters ommited
}
@XmlRootElement(name = "Data")
@XmlAccessorType(XmlAccessType.FIELD)
public class TransactionRequestData {
@XmlAttribute(name = "field1")
private String field1;
public String getField1() {
return field1;
}
public void setField1(String field1) {
this.field1 = field1;
}
....getters & setters ommited
}
並且不要忘記為屬性包括getter和setter。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.