我需要在我的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属性。
用@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
}
,不要忘记包括属性的getters和setter。