jaxb中xml和bean对应返回null

因为这个问题搞了一整天,实在受不了了晚上去问了我哥。第二天白天继续搞,都没搞明白。
后来发现是简单的xml标签和bean对应关系。
但是因为xml层级太多,自己改的时候改不完全,怎么改都错,建议大家开个excel,把xml的层级列好,并把bean列在一旁,对应着改名字。

下面记录一下严格的标签对应例子,方便第一次接触的人(like me)快速理解.

这是xml格式的数据:

<PERSON>
    <MSG>NO ERROR</MSG>
    <ADULT>
        <TEACHER>
            <NAME>20</NAME>
        </TEACHER>
    </ADULT>
</PERSON>

对应的类

@Data
@XmlRootElement(name="PERSON")
@XmlAccessorType(XmlAccessType.FIELD)
public class PEOPLE implements Serializable {
    private String MSG;
   
    @XmlElementWrapper(name="ADULT")
    private List<ADULT> TEACHER;
    
}

@Data
public class ADULT implements Serializable {
    private String NAME;
}

这里
1)xml的根节点person,和@XmlRootElement里属性指定的name必须一致,但是和这个类名不需要一致
2)@XmlElementWrapper是对应xml的次节点,其属性name也必须和xml的此节点名称adult保持一致,而且adult这个类的类名,也必须和指定的name保持一致;
这个注解的里是这么写的,理论上类名不用一致,只要注解里指定的name属性和xml次节点名称一致,但是我试了,不写一样还是会null。所以保险起见,还是保持一致。

@Retention(RUNTIME) @Target({FIELD, METHOD})
public @interface XmlElementWrapper {
    /**
     * Name of the XML wrapper element. By default, the XML wrapper
     * element name is derived from the JavaBean property name.
     */
    String name() default "##default";
 }

3)private list < adult> teacher,这个属性名必须和xml次次节点名字保持一致;
只有严格保持bean每层都和xml节点名一致,才能接收到对应数据,一点错误,就等着null吧。
然后@Data注解和jaxb的注解不冲突,如果出问题了,不是@data注解的锅。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值