[英]Parsing XML with more sub-elements with JAXB
我有這樣的XML,我想將其解析為Java對象。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CreatePreOrderResponse>
<Errors>
<Error>
<Code>code 1</Code>
<Message>message 1</Message>
<ErrorElement>element 1</ErrorElement>
</Error>
<Error>
<Code>code 2</Code>
<Message>message 2</Message>
<ErrorElement>element 2</ErrorElement>
</Error>
</Errors>
</CreatePreOrderResponse>
我與JAXB
一起使用來解析XML字符串,該字符串沒有“子元素”,只有一個元素,其值處於errors
級別。
問題:我想知道如何獲取Errors
元素中的所有Error
元素,例如進入CreatePreOrderResponse
對象的List中? 是否可以使用JAXB
解組器自動解析它,我是否必須遍歷XML並手動解析它?
注意:僅供參考,這對我有用-這些類用於解析此XML(無子元素)。
<CreatePreOrderResponse>
<PreOrder>
<ID>123456789</ID>
</PreOrder>
</CreatePreOrderResponse>
BtnPreorderResponse
@XmlRootElement(name = "CreatePreOrderResponse")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlSeeAlso(BtnDocLine.class)
public class BtnPreorderResponse {
@XmlElement(name = "PreOrder")
private BtnPreorder btnPreorder;
@XmlElement(name = "Errors")
private BtnErrorListType btnErrorListType;
public BtnPreorder getBtnPreorder() {
return btnPreorder;
}
public void setBtnPreorder(BtnPreorder btnPreorder) {
this.btnPreorder = btnPreorder;
}
public BtnErrorListType getBtnErrorListType() {
return btnErrorListType;
}
public void setBtnErrorListType(BtnErrorListType btnErrorListType) {
this.btnErrorListType = btnErrorListType;
}
@Override
public String toString() {
return "BtnPreorderResponse{" +
"btnPreorder=" + btnPreorder +
", btnErrorListType=" + btnErrorListType +
'}';
}
}
Btn預購
@XmlRootElement(name = "PreOrder")
@XmlAccessorType(XmlAccessType.FIELD)
public class BtnPreorder {
@XmlElement(name = "ID")
private long id;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@Override
public String toString() {
return "BtnPreorder{" +
"id=" + id +
'}';
}
}
我想您已經將單獨的錯誤子句實現為類BtnErrorType。 現在是它們的列表:
@XmlType(name = "Errors")
@XmlAccessorType(XmlAccessType.FIELD)
public class BtnErrorListType {
@XmlElement(name = "Error")
private ArrayList<BtnErrorType> btnError;
...
public ArrayList<BtnErrorType> getBtnError() {
if (btnError == null)
btnError = new ArrayList<BtnErrorType>();
return btnError;
}
...
}
注意,只有getter,如果要向列表中添加元素,則應調用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.