这是我得到的错误
org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.ElementList(data=false, empty=true, entry=, inline=true, name=, required=true, type=void) on field 'Item' public java.util.List com.oe.bean.Items.Item for class com.oe.bean.Items at line 33
这是xml
<BconRs language="SG" currency="SGD">
<RsHeader>
<Date>20140614</Date>
<Time>162944</Time>
<TimeZone>GMT+06:00</TimeZone>
<MessageType>5320</MessageType>
<VersionNo>9005001</VersionNo>
<AppVersion>5.0.1</AppVersion>
<AccessToken></AccessToken>
<MerchantId>2003001</MerchantId>
<TerminalId>2004002</TerminalId>
<ResponseCode>00</ResponseCode>
<ErrorCode />
<ErrorMessage />
<LastTxnRefNo />
<OTP />
</RsHeader>
<Items>
<Item>
<CategoryCode />
<CategoryDescription />
<ItemCode>356</ItemCode>
<ItemDescription>20% offer, Latest model</ItemDescription>
<Quantity />
<UnitPrice>24560</UnitPrice>
<ItemBigImagesURL>http://goo.gl/klCGG4</ItemBigImagesURL>
<ItemContent>Front Loading Washing Machine 6.5Kg Capacity 6 Motion Direct Drive</ItemContent>
<ErrorCode />
<ErrorMessage />
<Beaconid>2499</Beaconid>
</Item>
<Item>
<CategoryCode />
<CategoryDescription />
<ItemCode>353</ItemCode>
<ItemDescription>40% Discount offer Childrens clothes</ItemDescription>
<Quantity />
<UnitPrice>500</UnitPrice>
<ItemBigImagesURL>http://goo.gl/efoIrB</ItemBigImagesURL>
<ItemContent>Childrens Garment Pack</ItemContent>
<ErrorCode />
<ErrorMessage />
<Beaconid>2499</Beaconid>
</Item>
</Items>
<MID />
</BconRs>
各种bean类
BconRs.java
import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;
@Root
public class BconRs {
@Attribute
public String language;
@Attribute
public String currency;
@Element(name="RsHeader")
public RsHeader rsHeader = null;
@Element(name="Items")
public Items items = null;
@Element(name="MID",required=false)
public Items mid = null;
//---------------------------------------------------------------------------------------
public RsHeader getResponseHeader() {
return rsHeader;
}
public void setResponseHeader(RsHeader rsHeader) {
this.rsHeader = rsHeader;
}
public Items getItemBeans() {
return items;
}
public void setItemBeans(Items items) {
this.items = items;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("BconRs [rsHeader=");
builder.append(rsHeader);
builder.append(", items=");
builder.append(items);
builder.append("]");
return builder.toString();
}
}
RsHeader.java
import org.simpleframework.xml.Element;
import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Path;
import org.simpleframework.xml.Root;
/* Corresponding xml*/
/*<RsHeader>
<Date>20140614</Date>
<Time>162944</Time>
<TimeZone>GMT+06:00</TimeZone>
<MessageType>5320</MessageType>
<VersionNo>9005001</VersionNo>
<AppVersion>5.0.1</AppVersion>
<AccessToken></AccessToken>
<MerchantId>2003001</MerchantId>
<TerminalId>2004002</TerminalId>
<ResponseCode>00</ResponseCode>
<ErrorCode />
<ErrorMessage />
<LastTxnRefNo />
<OTP />*/
@Element
public class RsHeader {
// @Path("BconRs/RsHeader[1]")
@Element(name="Date")
public String date = null;
// @Path("BconRs/RsHeader[1]")
@Element(name="Time")
public String time = null;
// @Path("BconRs/RsHeader[1]")
@Element(name="TimeZone")
public String resTimeZone = null;
// @Path("BconRs/RsHeader[1]")
@Element(name="MessageType")
public String resMessageType = null;
// @Path("BconRs/RsHeader[1]")
@Element(name="VersionNo")
public String resVersionNo = null;
// @Path("BconRs/RsHeader[1]")
@Element(name="AppVersion")
public String appVersion = null;
// @Path("BconRs/RsHeader[1]")
@Element(name="AccessToken",required=false)
public String accessToken = null;
// @Path("BconRs/RsHeader[1]")
@Element(name="MerchantId")
public String merchantId = null;
// @Path("BconRs/RsHeader[1]")
@Element(name="TerminalId")
public String terminalId = null;
// @Path("BconRs/RsHeader[1]")
/*@Element(name="")
public String operatorId = null;
// @Path("BconRs/RsHeader[1]")
@Element(name="")
public String responseDate = null;
// @Path("BconRs/RsHeader[1]")
@Element(name="")
public String responseTime = null;
// @Path("BconRs/RsHeader[1]")
@Element(name="")
public String responseTimeZone = null;*/
// @Path("BconRs/RsHeader[1]")
@Element(name="ResponseCode")
public String responseCode = null;
// @Path("BconRs/RsHeader[1]")
@Element(name="ErrorCode",required=false)
public String errorCode = null;
// @Path("BconRs/RsHeader[1]")
@Element(name="ErrorMessage",required=false)
public String errorMessage = null;
// @Path("BconRs/RsHeader[1]")
/* @Element
public String languageCode = null;
// @Path("BconRs/RsHeader[1]")
@Element
public String txnCode = null;
// @Path("BconRs/RsHeader[1]")
@Element
public String txnCurrencyCode = null;
// @Path("BconRs/RsHeader[1]")
@Element
public String stanNo = null;*/
// @Path("BconRs/RsHeader[1]")
@Element(name="LastTxnRefNo",required=false)
public String lastTxnRefNo = null;
@Element(name="OTP",required=false)
public String otp = null;
}
Items.java
import org.simpleframework.xml.Element;
import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Path;
import org.simpleframework.xml.Root;
//import org.simpleframework.xml.Root; /* @Element @ElementList*/
import java.util.ArrayList;
import java.util.List;
@Root(strict=false,name="Items")
public class Items {
/*@Path("BconRs/Items[1]")*/
// (inline = true)
@ElementList(inline = true)
public List<Item> Item;
//---------------------------------------------------------------------------
public List<Item> getItems() {
return Item;
}
public void setItems(List<Item> items) {
this.Item = items;
}
@Root(name="Item",strict=false)
private static class Item {
@Element(name="CategoryCode",required=false)
private String categoryCode;
@Element(name="CategoryDescription",required=false)
private String categoryDescription;
@Element(name="ItemCode")
private String itemCode ;
@Element(name="ItemDescription")
private String itemDescription ;
@Element(name="Quantity",required=false)
private String quantity ;
@Element(name="UnitPrice")
private String unitPrice ;
@Element(name="ItemBigImagesURL")
private String itemBigImageURL;
@Element(name="ItemContent")
private String itemContent ;
@Element(name="ErrorCode",required=false)
private String errorCode;
@Element(name="ErrorMessage",required=false)
private String errorMessage;
@Element(name="Beaconid")
private String beaconId ;
public String getCategoryCode() {
return categoryCode;
}
public void setCategoryCode(String categoryCode) {
this.categoryCode = categoryCode;
}
public String getCategoryDescription() {
return categoryDescription;
}
public void setCategoryDescription(String categoryDescription) {
this.categoryDescription = categoryDescription;
}
public String getItemCode() {
return itemCode;
}
public void setItemCode(String itemCode) {
this.itemCode = itemCode;
}
public String getItemDescription() {
return itemDescription;
}
public void setItemDescription(String itemDescription) {
this.itemDescription = itemDescription;
}
public String getQuantity() {
return quantity;
}
public void setQuantity(String quantity) {
this.quantity = quantity;
}
public String getUnitPrice() {
return unitPrice;
}
public void setUnitPrice(String unitPrice) {
this.unitPrice = unitPrice;
}
public String getItemBigImageURL() {
return itemBigImageURL;
}
public void setItemBigImageURL(String itemBigImageURL) {
this.itemBigImageURL = itemBigImageURL;
}
public String getItemContent() {
return itemContent;
}
public void setItemContent(String itemContent) {
this.itemContent = itemContent;
}
public String getErrorCode() {
return errorCode;
}
public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public String getBeaconId() {
return beaconId;
}
public void setBeaconId(String beaconId) {
this.beaconId = beaconId;
}
}
}
我在这里犯了什么错误。我喜欢不分开items类和item类。所以我在items类中内联并编写。错误发生在
行中的Items类中@ElementList(inline = true)
public List<Item> Item;
我不是可能的原因。任何帮助,将不胜感激。提前致谢
答案 0 :(得分:0)
尝试将entry
属性添加到@ElementList
注释。
我有类似的数据结构,如下所示:
@Root(name = "AddressBook")
public class AddressBook implements
List<Address> {
@ElementList(entry = "Address", inline = true)
private ArrayList<Address> list;
}