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);

}

}

产量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527615.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wordcount.java_mapreduce中wordcount的java实现

用java模拟词频统计。有3个文件&#xff1a;text1: hello worldtext2:hello hadooptext3:hello mapreduce对上面的文件进行词频统计&#xff1a;结果应该是&#xff1a;hello:3; hadoop:1; world:1; mapreduce:1代码实现如下&#xff1a;package count;import java.ut…

java applog_java - 通过Logback登录到App Engine request_log - SO中文参考 - www.soinside.com

我当前部署的当前Logback配置如下(您可以说我的构想已耗尽...)&#xff1a;%-4relative [%thread] %-5level %logger{35} - %msgapplication.logWARNtech.provingground.dive_overwatch.etc.logging.enhancers.TestEnhancer%-4relative [%thread] %-5level %logger{35} - %msg查…

java生成pdf怎么合并行或者列_Java基础之PDF文件的合并

1、首先下载一个jar包&#xff1a;pdfbox-app-1.7.1.jar2、代码如下&#xff1a;package com;import java.io.File;import java.io.IOException;import org.apache.pdfbox.util.PDFMergerUtility;/*** PDF格式的图片合并**/public class PdfBox {private static String[] getFi…

java 迭代器的原理_java里Iterator的原理

Iterator&#xff1a;迭代器。其实就是集合取出元素的方式&#xff0c;每个容器的数据结构不一样&#xff0c;所以他们存取的方式不一样&#xff0c;具体事项方法不一样&#xff0c;具体实现方法不一样&#xff0c;每个集合都具备取出方式&#xff0c;对于取出这个动作不足以用…

Java里a和b哪个大_Java中 a+=b和a=a+b有什么区别?

在java语言中&#xff0c;ab和aab的主要区别是在运算的精度上。类似的有“- 、 * 、/ 、% ”&#xff0c;这里以ab 与 aab 举例说明一下。1.下面是一串代码&#xff0c;我们试一下aab的形式&#xff1a;public class TestDemo {public static void main(String[] args) {byte a…

java程序回滚之后在哪看_Java在触发事务回滚之后为什么会再一次回到Servlet开始的地方重新走一次流程?...

代码流程前台点击"提交订单"进入BaseServlet.classBaseServlet.class分发至子类OrderServlet.class的submitOrder()方法submitOrder()调用Service层的submitOrder()方法.关键是Service层submitOrder()中使用了事务回滚. 这里调用了Dao层两个方法: fun01()和fun02(), …

java不进入for_为什么阿里巴巴Java开发手册中强制要求不要在foreach循环里进行元素的remove和add操作?...

在阅读《阿里巴巴Java开发手册》时&#xff0c;发现有一条关于在 foreach 循环里进行元素的 remove/add 操作的规约&#xff0c;具体内容如下&#xff1a;错误演示我们首先在 IDEA 中编写一个在 foreach 循环里进行 remove 操作的代码&#xff1a;import java.util.ArrayList;i…

mysql对测试如何_我如何对MySQL进行基准测试?

我目前正在使用MySQL工作台.我希望看到表中行数增加时性能的差异.我想专门测试并比较1000行,10,000行,100,000行,1,000,000行和10,000,000行.那么,是否有任何工具可以让我这样做并提供有关磁盘I / O,内存使用情况,CPU使用率和完成查询的时间的统计信息&#xff1f;解决方法:是.…

JAVA两个视图层_MVC - 管理帐户 . 一个视图有两个局部视图和两个模型

美好的一天&#xff01;我正在管理帐户页面上&#xff0c;用户可以在其中更改密码和电子邮件 .我有一个管理视图&#xff0c;其中有两个部分视图&#xff0c;更改密码和更改电子邮件 . 这两种都使用两种不同的模型 . 这样做的目的是在同一页面上同时包含更改密码和更改电子邮件…

8086汇编4位bcd码_二进制格雷码与自然二进制码的互换分析

在精确定位控制系统中&#xff0c;为了提高控制精度&#xff0c;准确测量控制对象的位置是十分重要的。目前&#xff0c;检测位置的办法有两种&#xff1a;其一是使用位置传感器&#xff0c;测量到的位移量由变送器经A/D转换成数字量送至系统进行进一步处理。此方法精度高&…

python datetime.datetime 当前_关于datetime:如何让python显示当前时间(东部)

如何让python在东方显示时间&#xff1f;我已经看过了Python文档&#xff0c;但它非常混乱。我使用的是python 3。谢谢。这可能有帮助&#xff1a;stackoverflow.com/questions/117514/&hellip&#xff1b;基本上&#xff0c;在内部使用UTC&#xff0c;并在显示时使用pytz转…

软件工程结构化建模的方法和工具_软件工程系列-结构化设计方法2

本系列文章为笔记&#xff0c;内容根据北京大学《软件工程》MOOC 初始化模块结构图精化的启发式规则常见的启发式规则什么叫做“启发式”根据设计准则&#xff0c;从长期的软件开发实践中&#xff0c;总结出来的规则既不是设计目标&#xff0c;也不是设计时应该普遍遵循的原理常…

java四种权限的高低_Java(四种权限修饰符)

/*Java中有四种权限修饰符&#xff1a;public > protected > (default) > private同一个类(我自己) YES YES YES YES同一个包(我邻居) YES YES YES NO不同包子类(我儿子) YES YES NO NO不同包非子类(陌生人) YES NO NO NO注意事项&#xff1a;(default)并不是关键字“…

安全扫描失败无法上传_Apache Solr 未授权上传(RCE)漏洞的原理分析与验证

漏洞简介Apache Solr 发布公告&#xff0c;旧版本的ConfigSet API 中存在未授权上传漏洞风险&#xff0c;被利用可能导致 RCE (远程代码执行)。受影响的版本&#xff1a;Apache Solr6.6.0 -6.6.5Apache Solr7.0.0 -7.7.3Apache Solr8.0.0 -8.6.2安全专家建议用户尽快升级到安全…

php session页面传值,PHP session在页面间传递的问题

PHP session在页面间传递的问题:前提: 使用codeIgniter的框架, 使用PHP自带的session1. 在纯apache服务器上没有问题2. 在Nginx的apache模式下, 独立于codeIgniter框架外的页面无问题3. 在Nginx的apache模式下, 置于codeIgniter框架内的页面, 页面间session的传递有问题, 即一个…

php div边框,CSS自定义边框

3 个答案:答案 0 :(得分&#xff1a;2)边框图像覆盖在元素的顶部&#xff0c;因此即使边框图像是透明的&#xff0c;它仍然会显示其背后元素的颜色。纯CSS解决方案是使用伪元素。首先将div的位置设置为非静态(相对&#xff0c;绝对或固定将起作用)。然后使你的元素绝对并跨越di…

html5怎么改为vue_Vue实战——编程式导航打开新窗口,登录状态本地存储

近日来&#xff0c;我陆续的分享了vue相关的系列文章&#xff0c;以新闻列表项目为载体&#xff0c;实战的方式介绍了vue及其周边的技术。本文承接前文&#xff0c;不断通过项目迭代的方式继续分享vue相关的知识。目前Vue实战系列文章已形成了目录&#xff0c;各位感兴趣的朋友…

php 有子目录,php列出目录中所有子目录的实现代码

/*** 取出指定目录的所有子目录* edit: www.jbxue.com* 2013/10/9*/function listdir($dir){if ($handle opendir($dir)){$output array();while (false ! ($item readdir($handle))){if (is_dir($dir./.$item) and $item ! "." and $item ! ".."){$out…

python转cpp_python转c工具

广告关闭 腾讯云11.11云上盛惠 &#xff0c;精选热门产品助力上云&#xff0c;云服务器首年88元起&#xff0c;买的越多返的越多&#xff0c;最高返5000元&#xff01; compute.proto # python_out目录指定 xxxx_pb2.py的输出路径&#xff0c;我们指定为. 当前路径# grpc_pytho…

php 变量 换行,php去除换行符的方法小结(PHP_EOL变量的使用)_PHP教程

一个小小的换行&#xff0c;其实在不同的平台有着不同的实现&#xff0c;为什么要这样&#xff0c;可以是世界是多样的。本来在unix世界换行就用/n来代替&#xff0c;但是windows为了体现他的不同&#xff0c;就用/r/n&#xff0c;更有意思的是在mac中用/r。因此unix系列用 /n&…