java jaxb注解xmlnull_java – 将空值表示为xml jaxb中的空元素
我强烈建议使用不存在节点或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中的空元素相关推荐
- java里arraylist删除节点方法_Java之——删除ArrayList中的反复元素的2种方法
ArrayList是Java中最经常使用的集合类型之中的一个.它同意灵活加入多个null元素,反复的元素,并保持元素的插入顺序.在编码时我们经常会遇 到那种必须从已建成的ArrayList中删除反复元 ...
- com4j学习(1):Java操作Visio之Java读取Visio图形关系并存储到XML文件中
前言: MicroSoft Visio是微软旗下一款非常非常出色的绘图软件,可以用来绘制各种各样的图形(如流程图.UML.工程图等).现在有这样一个需求,我们想读取visio中的图形的形状.属性.连接 ...
- java旋转数组查找某一个值_旋转数组中查找某个元素
在一个排序的数组中,如{1,2,3,4,5,6,7},经过旋转后得到{4,5,6,7,1,2,3},当然也可以得到原数组{1,2,3,4,5,6,7},在该旋转后的数组中查找某个元素. 旋转后的数组可 ...
- Java常用注解以及使用场景示例
Java注解定义 Java注解是Java编程语言中的一种特殊形式的元数据,它们可以用于为程序的各个元素(例如类.方法.字段等)添加额外的信息和属性.注解是在Java 5中引入的,通过在代码中使用注解, ...
- php中去除数组中空值,php如何去除数组中空值
在php中可以使用系统函数"array_filter"去除空值,其语法是"array_filter (参数1,参数2);",此函数是依次将 "参数1& ...
- java jaxb 注解_JAXB注解
JAXB(Java API for XML Binding),它提供了一个便捷的方式高速Java对象XML转变.于JAX-WS(Java的WebService规范之中的一个)中,JDK1.6 自带的版 ...
- java jaxb 注解_JAXB注解的使用详解
一.简介 1.概念是什么:(Java Architecture for XML Binding) 是一个业界的标准,即是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了 ...
- java jaxb 注解_一、JAXB注解的使用详解
一.首先先上一段测试的代码下面的说明和测试都已这一段代码为主 package shiqingxue.cn.itcast.utils.xml; import javax.xml.bind.annotat ...
- java jaxb 注解_JAXB注解使用
一.Jaxb处理java对象和xml之间转换常用的annotation有: @XmlType @XmlElement @XmlRootElement @XmlAttribute @XmlAccesso ...
最新文章
- “5G杀手级应用”Cloud VR 华为如何打响5G第一枪
- 免费好用的Diff和Merge工具大总结
- 不同文件系统类型及其修复
- 24有几种封装尺寸_Y6T16 光模块尺寸演进
- php集成极光推送,php推送例子(第三方极光推送)
- Gauss高斯消元——模板
- 滑动拼图验证码操作步骤:_拼图项目:一个不完整的难题
- ASP.NET MVC5使用AjaxHelp
- Effective C# Item33:限制类型的可见性
- 京东总部大厦已经完成5G信号覆盖 网速是4G的20倍!
- Sublime Text3 python交互式环境+快捷键设置
- java容器取交集、并集、补集、差集示例
- TBB concurrent_set 没有erase
- 【在linux系统中使用绘王HC16数位板绘画】
- 小学计算机网络安全考试试卷,2017年小学生网络安全知识竞赛试题
- c语言百变图形,百变图标app官方版-百变图标更换图标app下载v1.0.0-西西软件下载...
- 关系数据库范式(1NF,2NF,3NF,BCNF,4NF,5NF)全解析
- Android十大开源框架
- Code Composer Studio(CCS)新建project
- xp系统访问共享服务器提示无网络路径,WinXP提示无任何网络提供程序接受指定的网络路径怎么办?...
热门文章
- leetcode算法题解(Java版)-16-动态规划(单词包含问题)
- 企业如何采用机器学习
- 阿里云MaxCompute(大数据)公开数据集---带你玩转人工智能 1
- 信息如何实现病毒式传播?一文看懂Gossip协议
- 肯耐珂萨助力世界500强零售企业在线春招:单次面试3000人
- 在容器上构建持续部署及最佳实践初探
- 山东师范大学志愿推荐系统邀请码_快看点邀请码填写HGC1QK快看点邀请码填写HGC1QK快看点邀请码大家千万不要乱填写哦...
- Linux图片马PHP,php 根据请求生成缩略图片保存到Linux图片服务器的代码
- 精讲23种设计模式-策略模式~聚合短信服务和聚合支付服务
- 秒杀场景_解决秒杀超卖问题_04