[英]Not able to extract Values from XML using Jaxb
我正在嘗試使用Jaxb從XML對象中提取對象之一。 它不會返回任何錯誤日志。 但是,它返回一個空對象。 請找到代碼。 請僅用Jaxb通知我(不使用Documentbuilder方式)
<DATAPACKET REQUEST-ID = "4">
<HEADER>
<RESPONSE-TYPE CODE = "0" DESCRIPTION = "Response Error" />
</HEADER>
<BODY>
<ERROR-LIST>
<ERROR-CODE>107</ERROR-CODE>
</ERROR-LIST>
</BODY>
</DATAPACKET>
數據包
@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "DATAPACKET")
public class DataPacket {
@XmlElement(name ="BODY")
private Body BODY;
public DataPacket (){}
// Setter and getter of Body
}
身體
@XmlAccessorType(XmlAccessType.NONE)
public class Body{
@XmlElement(name ="ERROR-LIST")
private ErrorListDto errorList;
public Body(){}
// Setter and getter of errorList
}
ErrorListDto
@XmlAccessorType(XmlAccessType.NONE)
public class ErrorListDto{
@XmlElement(name="ERROR-CODE")
private List<ErrorCodesDto> errorCodes;
public ErrorListDto(){}
// Setter and getter of errorCodes
}
ErrorCodesDto
@XmlAccessorType(XmlAccessType.NONE)
public class ErrorCodesDto {
@XmlElement(name = "ERROR-CODE")
private String ERROR_CODE;
public ErrorCodesDto() {}
我提取值如下
JAXBContext jc = JAXBContext.newInstance(DataPacket.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
StringReader reader = new StringReader(responseXML);
DataPacket dp = (DataPacket) unmarshaller.unmarshal(reader);
Body body = dp.getBODY();
ErrorListDto errorList = body.getErrorList();
System.out.println(errorList.toString()); --> Here it has error code as null
請讓我知道這里出了什么問題。 任何想法將不勝感激。
如下更改您的ErrorCodesDto
,它將起作用:
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlValue;
@XmlAccessorType(XmlAccessType.NONE)
public class ErrorCodesDto {
@XmlValue
private String ERROR_CODE;
public ErrorCodesDto() {
}
}
否則,您期望的“ xml”應包含
<ERROR-LIST>
<ERROR-CODE><ERROR-CODE>107</ERROR-CODE></ERROR-CODE>
</ERROR-LIST>
為了回答您的評論,該代碼甚至可以與以下xml一起使用
<DATAPACKET REQUEST-ID = "4">
<HEADER>
<RESPONSE-TYPE CODE = "0" DESCRIPTION = "Response Error" />
</HEADER>
<BODY>
<ERROR-LIST>
<ERROR-CODE>107</ERROR-CODE>
<ERROR-CODE>108</ERROR-CODE>
<ERROR-CODE>109</ERROR-CODE>
</ERROR-LIST>
</BODY>
</DATAPACKET>
編輯
您也可以通過將ErrorListDto
更改為不具有ErrorCodesDto
類來實現此ErrorListDto
@XmlElement(name = "ERROR-CODE")
private List<String> errorCodes;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.