JAXB中遇到的坑

1.使用JAXB将xml转化为java对象时,单纯的通过注解@XmlRootElement(namespace=“xxxxxx”),在根类上生命命名空间会产生两个问题:

  • 命名空间的作用范围只作用于根标签,而不会递归作用于下属所有标签,因而导致所有的使用@XmlElement标志的子属性全部获取不到。
  • 命名完成的namespace会产生形如nsN的前缀。

解决方法:如下方法配置package-info.java文件,解决点如注释:

/**
* package-info.java 
* 放在和实体同一个包路径下
*/
@XmlSchema(
        //在此处设置命名空间为了使用下面的@xmlnx重新命名前缀
        namespace ="http://www.omg.org/spec/BPMN/20100524/MODEL",
        //设置命名空间的应用范围,QUALIFIED为应用于所有标签
        elementFormDefault = XmlNsForm.QUALIFIED,
        xmlns = {
        @XmlNs(prefix = "activiti",namespaceURI = "http://activiti.org/bpmn"),
        @XmlNs(prefix = "bpmndi",namespaceURI = "http://www.omg.org/spec/BPMN/20100524/DI"),
        
        //重新命名前缀
        @XmlNs(prefix = "",namespaceURI = "http://www.omg.org/spec/BPMN/20100524/MODEL")
})
package com.bpmn;

import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;

2.要实现xml和java对象的映射关系,需要用以下两种方法之一来进行标注:

  • 方法一:使用@XmlAccessorType注解和属性声明上添加@XmlAttribute或@XmlElement
  • 方法二:直接在get或set方法上使用@XmlAttribute或@XmlElement

 

转载于:https://my.oschina.net/u/3786691/blog/3084500

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值