我强烈建议使用不存在节点或xsi:nil =“true”属性来表示null.这最适用于模式验证(即< age />或< age>< / age>不是xsd:int类型的有效元素.但是,如果您不能在这里完成您的用例:

标准JAXB行为

import javax.xml.bind.annotation.*;

@XmlRootElement

@XmlAccessorType(XmlAccessType.FIELD)

public class Address {

private String street;

@XmlElement(nillable=true)

private String city;

}

以下是两个字段的值为空的XML输出.

MOXY – 覆盖此类行为

MOXy不提供注释来为类中的所有属性指定空策略.但是,您可以通过@XmlCustomizer注释来使用DescriptorCustomizer,并调整本机MOXy映射元数据来完成相同的操作.

DescriptorCustomizer(AddressCustomizer)

import org.eclipse.persistence.config.DescriptorCustomizer;

import org.eclipse.persistence.descriptors.ClassDescriptor;

import org.eclipse.persistence.mappings.DatabaseMapping;

import org.eclipse.persistence.oxm.mappings.XMLDirectMapping;

import org.eclipse.persistence.oxm.mappings.nullpolicy.XMLNullRepresentationType;

public class AddressCustomizer implements DescriptorCustomizer {

@Override

public void customize(ClassDescriptor descriptor) throws Exception {

for(DatabaseMapping mapping : descriptor.getMappings()) {

if(mapping.isAbstractDirectMapping()) {

XMLDirectMapping xmlDirectMapping = (XMLDirectMapping) mapping;

xmlDirectMapping.getNullPolicy().setMarshalNullRepresentation(XMLNullRepresentationType.EMPTY_NODE);

xmlDirectMapping.getNullPolicy().setNullRepresentedByEmptyNode(true);

}

}

}

}

DomainModel(地址)

import javax.xml.bind.annotation.*;

import org.eclipse.persistence.oxm.annotations.XmlCustomizer;

@XmlRootElement

@XmlAccessorType(XmlAccessType.FIELD)

@XmlCustomizer(AddressCustomizer.class)

public class Address {

private String street;

@XmlElement(nillable=true)

private String city;

}

产量

MOXY – 覆盖所有类别的行为

如果你想覆盖所有映射类的空处理,我建议改用SessionEventListener.如果您愿意,也可以使用此方法来更新单个类的元数据.

SessionEventListener(NullPolicySessionEventListener)

import org.eclipse.persistence.descriptors.ClassDescriptor;

import org.eclipse.persistence.mappings.DatabaseMapping;

import org.eclipse.persistence.oxm.mappings.XMLDirectMapping;

import org.eclipse.persistence.oxm.mappings.nullpolicy.XMLNullRepresentationType;

import org.eclipse.persistence.sessions.*;

public class NullPolicySessionEventListener extends SessionEventAdapter {

@Override

public void preLogin(SessionEvent event) {

Project project = event.getSession().getProject();

for(ClassDescriptor descriptor : project.getOrderedDescriptors()) {

for(DatabaseMapping mapping : descriptor.getMappings()) {

if(mapping.isAbstractDirectMapping()) {

XMLDirectMapping xmlDirectMapping = (XMLDirectMapping) mapping;

xmlDirectMapping.getNullPolicy().setMarshalNullRepresentation(XMLNullRepresentationType.EMPTY_NODE);

xmlDirectMapping.getNullPolicy().setNullRepresentedByEmptyNode(true);

}

}

}

}

}

演示代码

import java.util.*;

import javax.xml.bind.*;

import org.eclipse.persistence.jaxb.JAXBContextProperties;

import org.eclipse.persistence.sessions.SessionEventListener;

public class Demo {

public static void main(String[] args) throws Exception {

Map properties = new HashMap(1);

SessionEventListener sessionEventListener = new NullPolicySessionEventListener();

properties.put(JAXBContextProperties.SESSION_EVENT_LISTENER,sessionEventListener);

JAXBContext jc = JAXBContext.newInstance(new Class[] {Address.class},properties);

Address address = new Address();

Marshaller marshaller = jc.createMarshaller();

marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,true);

marshaller.marshal(address,System.out);

}

}

产量

java jaxb注解xmlnull_java – 将空值表示为xml jaxb中的空元素相关推荐

  1. java里arraylist删除节点方法_Java之——删除ArrayList中的反复元素的2种方法

    ArrayList是Java中最经常使用的集合类型之中的一个.它同意灵活加入多个null元素,反复的元素,并保持元素的插入顺序.在编码时我们经常会遇 到那种必须从已建成的ArrayList中删除反复元 ...

  2. com4j学习(1):Java操作Visio之Java读取Visio图形关系并存储到XML文件中

    前言: MicroSoft Visio是微软旗下一款非常非常出色的绘图软件,可以用来绘制各种各样的图形(如流程图.UML.工程图等).现在有这样一个需求,我们想读取visio中的图形的形状.属性.连接 ...

  3. java旋转数组查找某一个值_旋转数组中查找某个元素

    在一个排序的数组中,如{1,2,3,4,5,6,7},经过旋转后得到{4,5,6,7,1,2,3},当然也可以得到原数组{1,2,3,4,5,6,7},在该旋转后的数组中查找某个元素. 旋转后的数组可 ...

  4. Java常用注解以及使用场景示例

    Java注解定义 Java注解是Java编程语言中的一种特殊形式的元数据,它们可以用于为程序的各个元素(例如类.方法.字段等)添加额外的信息和属性.注解是在Java 5中引入的,通过在代码中使用注解, ...

  5. php中去除数组中空值,php如何去除数组中空值

    在php中可以使用系统函数"array_filter"去除空值,其语法是"array_filter (参数1,参数2);",此函数是依次将 "参数1& ...

  6. java jaxb 注解_JAXB注解

    JAXB(Java API for XML Binding),它提供了一个便捷的方式高速Java对象XML转变.于JAX-WS(Java的WebService规范之中的一个)中,JDK1.6 自带的版 ...

  7. java jaxb 注解_JAXB注解的使用详解

    一.简介 1.概念是什么:(Java Architecture for XML Binding) 是一个业界的标准,即是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了 ...

  8. java jaxb 注解_一、JAXB注解的使用详解

    一.首先先上一段测试的代码下面的说明和测试都已这一段代码为主 package shiqingxue.cn.itcast.utils.xml; import javax.xml.bind.annotat ...

  9. java jaxb 注解_JAXB注解使用

    一.Jaxb处理java对象和xml之间转换常用的annotation有: @XmlType @XmlElement @XmlRootElement @XmlAttribute @XmlAccesso ...

最新文章

  1. “5G杀手级应用”Cloud VR 华为如何打响5G第一枪
  2. 免费好用的Diff和Merge工具大总结
  3. 不同文件系统类型及其修复
  4. 24有几种封装尺寸_Y6T16 光模块尺寸演进
  5. php集成极光推送,php推送例子(第三方极光推送)
  6. Gauss高斯消元——模板
  7. 滑动拼图验证码操作步骤:_拼图项目:一个不完整的难题
  8. ASP.NET MVC5使用AjaxHelp
  9. Effective C# Item33:限制类型的可见性
  10. 京东总部大厦已经完成5G信号覆盖 网速是4G的20倍!
  11. Sublime Text3 python交互式环境+快捷键设置
  12. java容器取交集、并集、补集、差集示例
  13. TBB concurrent_set 没有erase
  14. 【在linux系统中使用绘王HC16数位板绘画】
  15. 小学计算机网络安全考试试卷,2017年小学生网络安全知识竞赛试题
  16. c语言百变图形,百变图标app官方版-百变图标更换图标app下载v1.0.0-西西软件下载...
  17. 关系数据库范式(1NF,2NF,3NF,BCNF,4NF,5NF)全解析
  18. Android十大开源框架
  19. Code Composer Studio(CCS)新建project
  20. xp系统访问共享服务器提示无网络路径,WinXP提示无任何网络提供程序接受指定的网络路径怎么办?...

热门文章

  1. leetcode算法题解(Java版)-16-动态规划(单词包含问题)
  2. 企业如何采用机器学习
  3. 阿里云MaxCompute(大数据)公开数据集---带你玩转人工智能 1
  4. 信息如何实现病毒式传播?一文看懂Gossip协议
  5. 肯耐珂萨助力世界500强零售企业在线春招:单次面试3000人
  6. 在容器上构建持续部署及最佳实践初探
  7. 山东师范大学志愿推荐系统邀请码_快看点邀请码填写HGC1QK快看点邀请码填写HGC1QK快看点邀请码大家千万不要乱填写哦...
  8. Linux图片马PHP,php 根据请求生成缩略图片保存到Linux图片服务器的代码
  9. 精讲23种设计模式-策略模式~聚合短信服务和聚合支付服务
  10. 秒杀场景_解决秒杀超卖问题_04