请任何人帮助我。如何使用JAXB注释为此xml编写Pojo类。 以下是示例代码:
`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ERRORFILE xmlns="http://www.corelogic.com/fps/Returned_error">
<ERROR_LIST listCount="2">
<ERROR>
<ERROR_CODE>11</ERROR_CODE>
<ERROR_MSG>sad</ERROR_MSG>
<ACTUAL_HEADER_COUNT>2</ACTUAL_HEADER_COUNT>
<EXPECTED_HEADER_COUNT>3</EXPECTED_HEADER_COUNT>
<REC_NUMBERS totalCount="3">
<REC_NUMBER>4</REC_NUMBER>
<REC_NUMBER>5</REC_NUMBER>
<REC_NUMBER>6</REC_NUMBER>
</REC_NUMBERS>
</ERROR>
<ERROR>
<ERROR_CODE>22</ERROR_CODE>
<ERROR_MSG>bad</ERROR_MSG>
<ACTUAL_HEADER_COUNT>4</ACTUAL_HEADER_COUNT>
<EXPECTED_HEADER_COUNT>3</EXPECTED_HEADER_COUNT>
<REC_NUMBERS totalCount="2">
<REC_NUMBER>4</REC_NUMBER>
<REC_NUMBER>5</REC_NUMBER>
</REC_NUMBERS>
</ERROR>
</ERROR_LIST>
</ERRORFILE>`
答案 0 :(得分:0)
以下内容将有所帮助:
在JAXB中,Java类对应于XML Schema中的复杂类型。每种类型的复杂元素通常需要一个类。根据您的文档,您需要以下课程:ErrorFile
,ErrorList
,Error
,RecNumbers
等。
默认情况下,JAXB不需要任何映射元数据。节点名称派生自相应的Java名称。由于您的所有元素都是大写,因此您需要使用@XmlRootElement
和@XmlElement
注释指定名称。
@XmlRootElement(name="ERRORFILE")
public class ErrorFile {
}
默认情况下,JAXB将所有内容表示为XML元素。要将某些内容映射到XML属性,您需要使用@XmlAttribute
注释。
由于您的XML文档是名称空间限定的,因此您需要利用包级别@XmlSchema
注释来映射:
如果您的ERROR_LIST
和REC_NUMBERS
元素是包含集合数据的简单分组元素,那么您可以执行以下操作:
@XmlElementWrapper(name="ERROR_LIST")
@XmlElement(name="ERROR")
public List<Error> getErrorList() {
return errorList;
}
但是,由于您在该级别将一些额外的数据映射为XML属性,因此您需要将其表示为一个类:
@XmlElement(name="ERROR_LIST")
public ErrorList getErrorList() {
return errorList;
}
更多信息: