如何使用JAXB为这个xml编写pojo类?

时间:2014-06-19 08:09:22

标签: jaxb

请任何人帮助我。如何使用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>`

1 个答案:

答案 0 :(得分:0)

以下内容将有所帮助:

班级数

在JAXB中,Java类对应于XML Schema中的复杂类型。每种类型的复杂元素通常需要一个类。根据您的文档,您需要以下课程:ErrorFileErrorListErrorRecNumbers等。

映射元数据

默认情况下,JAXB不需要任何映射元数据。节点名称派生自相应的Java名称。由于您的所有元素都是大写,因此您需要使用@XmlRootElement@XmlElement注释指定名称。

@XmlRootElement(name="ERRORFILE")
public class ErrorFile {
}

XML属性

默认情况下,JAXB将所有内容表示为XML元素。要将某些内容映射到XML属性,您需要使用@XmlAttribute注释。

NAMESPACES

由于您的XML文档是名称空间限定的,因此您需要利用包级别@XmlSchema注释来映射:

分组元素

如果您的ERROR_LISTREC_NUMBERS元素是包含集合数据的简单分组元素,那么您可以执行以下操作:

@XmlElementWrapper(name="ERROR_LIST")
@XmlElement(name="ERROR")
public List<Error> getErrorList() {
    return errorList;
}

但是,由于您在该级别将一些额外的数据映射为XML属性,因此您需要将其表示为一个类:

@XmlElement(name="ERROR_LIST")
public ErrorList getErrorList() {
    return errorList;
}

更多信息: