java xml 序列化_java-序列化为XML时忽略父类

当子类列表上有@XmlElement时,是否有一个JAXB注释可以忽略父类?

只是要澄清一下-我想知道是否有比将所有父类的getter / setter标记为瞬态更好的方法,然后不得不回到子类并添加getter / setter并将它们标注为XmlElements

一个例子:

public class GenericHelper {

String name="";

String dates="";

String roleName="";

String loe="";

@XmlTransient

public String getName() {return name;}

public void setName(String name) {this.name = name;}

@XmlTransient

public String getDates() {return dates;}

public void setDates(String dates) {this.dates = dates;}

@XmlTransient

public String getRoleName() {return roleName;}

public void setRoleName(String roleName) {this.roleName = roleName;}

@XmlTransient

public String getLOE() {return loe;}

public void setLOE(String loe) {

this.loe = loe.replace("%", "").trim();

}

}

public class SpecificHelper extends GenericHelper {

List projects;

public SpecificHelper (){

projects=new ArrayList();

}

@XmlElement(name = "project")

@XmlElementWrapper (name = "projectlist")

public List getProjects() {return projects;}

public void setProjects(List projects) {this.projects = projects;}

@XmlElement

public String getName(){

return super.getName();

}

@Override

public String toString(){

String ret="SpecificHelper [";

ret+="name:"+name+";";

ret+="dates:"+dates+";";

ret+="roleName:"+roleName+";";

ret+="loe:"+loe+";";

ret+="\n\tprojects:"+projects+";";

return ret+"]";

}

}

因此,在此示例中,如果我在GenericHelper中删除XmlTransient注释,则将其扩展的任何类,如果我有一个方法getSpecificHelper()返回了所有雇主的列表,并使用XmlElement对其进行注释,则所有这些项都将返回带有名称,LOE,RoleName等的名称.我正在寻找要在GenericHelper上使用的类批注,因此我可以避免不必单独使用所有@XmlTransients,而仅使用我在SpecificHelper中放置的XmlElement表示法

解决方法:

怎么样?

家长班

我们将使用XmlAccessType.NONE告诉JAXB仅映射了显式注释的字段/属性.

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

@XmlAccessorType(XmlAccessType.NONE)

public class Parent {

private String parentProperty1;

private String parentProperty2;

public String getParentProperty1() {

return parentProperty1;

}

public void setParentProperty1(String parentProperty1) {

this.parentProperty1 = parentProperty1;

}

public String getParentProperty2() {

return parentProperty2;

}

public void setParentProperty2(String parentProperty2) {

this.parentProperty2 = parentProperty2;

}

}

儿童班

我们将在子级上使用XmlAccessType.PROPERTY.我们要包括的父类中的任何属性都将被覆盖并显式注释.在此示例中,我们将从Parent类中引入parentProperty2.您只需要覆盖父类中的getter.

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement

@XmlAccessorType(XmlAccessType.PROPERTY)

public class Child extends Parent {

private String childProperty;

@Override

@XmlElement

public String getParentProperty2() {

return super.getParentProperty2();

}

public String getChildProperty() {

return childProperty;

}

public void setChildProperty(String childProperty) {

this.childProperty = childProperty;

}

}

示范课

import javax.xml.bind.JAXBContext;

import javax.xml.bind.Marshaller;

public class Demo {

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

JAXBContext jc = JAXBContext.newInstance(Child.class);

Child child = new Child();

child.setParentProperty1("parentProperty1");

child.setParentProperty2("parentProperty2");

child.setChildProperty("childProperty");

Marshaller marshaller = jc.createMarshaller();

marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

marshaller.marshal(child, System.out);

}

}

输出量

childProperty

parentProperty2

标签:jaxb,data-binding,xml-serialization,java

来源: https://codeday.me/bug/20191105/1997861.html

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

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

相关文章

Gartner:人工智能将改变个人设备领域的游戏规则

来源:人工智能和大数据概要:目前,AI正在产生多种颠覆性力量,重塑我们与个人技术互动的方式。近日,Gartner公司预测,随着情感人工智能(AI)日臻成熟,个人设备到2022年将比您…

极限编程实践

1、客户作为团队成员 谁是客户?XP团队中的客户是指定义产品的特性并排列这些特性优先级的人或团体。 最好是客户和开发人员在一个房间中工作。 2、用户故事 对于做计划而言,了解需求只需要做到能够估算它的程度就足够了,需求的特定细节很可能…

南开大学java考试试题_2014秋学期南开大学《Java语言程序设计》在线作业附答案...

2014秋学期南开大学《Java语言程序设计》在线作业附答案1.下列代码中,将引起一个编译错误的行是(D)。1)public class Test{ 2) int m,n; 3) public Test(){} 4) public Test(inta){ma;} 5) public static void main(String args[]){ 6) Test t1,t2; 7) int j,k;8) j…

张小龙演讲干货:微信的未来在哪?这里有7个答案

来源:钱塘大数据概要:1月15日,以“to be正当时”为主题的2018微信公开课Pro版在广州举行,腾讯集团高级执行副总裁、微信事业群总裁张小龙出席并发表演讲。1月15日,以“to be正当时”为主题的2018微信公开课Pro版在广州…

敏捷软件开发—原则、模式与实践总结

思维导图:https://www.processon.com/view/link/60d46dfb5653bb049a469068

java 配置写成表达式_Java的正则表达式之小结

一直很奇怪为什么Java和Tcl的正则表达式之间有这样的一个差异,即Tcl正则表达式中的转义符\在Java正则表达式中一律会需要写成\\。比如,Tcl的正则表达式为 "^Case\_name\s*\\s*(.*)"对应的Java正则表达式则需要写成 "^Case\\_name\\s*\\\s…

AWS VS 阿里云 VS 腾讯云 国内三大云服务商云主机评测报告

来源:CloudBest概要:近几年,随着国内公有云市场规模的不断增长,以阿里云、腾讯云为代表的本土云服务商,以及以AWS、微软Azure为代表的海外云服务商,成为公有云市场最大的赢家,市场寡头化趋势已经…

单一职责原则(SRP)

单一职责原则(The Single Responsibility Principle,SRP) 就一个类而言,应该仅有一个引起它变化的原因。 为何要把两个职责分离到单独的类中? 因为每一个职责都是变化的一个轴线(an axis of change&…

数独java界面基础_java版数独游戏界面实现(二)

本文实例为大家分享了java版数独游戏界面实现的具体代码,供大家参考,具体内容如下实现效果图:这里写图片描述主函数用于启动程序:package hlc.shudu.app;import hlc.shudu.src.ShuduHelper;import hlc.shudu.ui.ShuduMainFrame;pu…

多国相继出台政策法规:为「自动驾驶」的「创新发展」保驾护航

来源:腾讯研究院曹建峰 腾讯研究院法律研究中心高级研究员祝林华 腾讯研究院法律研究中心助理研究员人工智能等新技术,正从科幻概念逐步落地到各行各业,将从重塑驾驶、医疗、制造等领域开始,全面重构人类社会和生活。自动驾驶汽…

测试替身之类型

测试桩Stub 桩:截断的或非常短的物体。 测试桩,用最简单的可能实现代替Real。 基本实现:所有方法仅一行,返回默认值。 public class LoggerStub implements Logger {public void log(LogLevel level, String message) {// still…

华为《5G业务商业价值评估》白皮书!

来源:5G蹇飒:华为公司商业与网络咨询部咨询专家。概要:在过去不长的时间里,5G技术不断取得重大进展,5G发展之路更为清晰。未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学…

java正则匹配的坑_java正则表达式入坑指南

在日常开发工作中,无论你使用的语言是java、python、shell、golang还是C#, 正则表达式是编程语言中几乎绕不开的话题。有了它,可以帮你快速定位到符合条件的文本内容。今天小编带大家一起来学习下正则表达式,相信通过这篇文章的介…

这有5种来自大自然「馈赠」的AI技术及其应用,你知道多少?

原文来源:Towards Data Science作者:Luke James「雷克世界」编译:KABUDA对于技术领域中存在的AI相关技术,我们应心存感恩。人类不仅花费了数十年的时间来研究完善数学算法,以使这些奇妙复杂的算法发挥效用,…

有效单元测试之可读性

断言 断言的基本原理和意图隐藏在无意义的单词和数字背后,难以理解,难以验证断言的正确性。 Bad eg. Test public void outputHasLineNumbers() {String content "1st match on #1\nand\n2nd match on #3";String out grep.grep("ma…

mysql 异步复制建立过程_mysql生产环境高可用---基于GTID异步复制项目实施

客户需求:客户需要上线一个门户网站,初期业务量非常小,数据量10个G,后台需要使用msyql 数据库,需要建设一个数据库环境项目技术:操作系统:两台linux系统 红帽6.5数据库版本:msyql 5.…

物联网定位技术超全解析!定位正在从室外走向室内~

来源:物联网智库概要:GPS和基站定位技术基本满足了用户在室外场景中对位置服务的需求。GPS和基站定位技术基本满足了用户在室外场景中对位置服务的需求。然而,人的一生当中有80%的时间是在室内度过的,个人用户、服务机器人、新型物…

有效的单元测试--总结

思维导图:https://www.processon.com/view/link/60d3072d0791297edd63290a

java原生的ajax怎么写_原生Ajax代码实现

AjaxAsynchronous JavaScript And XML异步:指一段程序执行时不会阻塞其他程序执行,其表现形式为程序的执行顺序不依赖程序本身的书写顺序 ,相反的则为同步,自己理解的就是类似百度的搜索框输入内容时的提示相关的内容功能&#xf…

人工智能阅读理解是如何打破人类记录? 解读阿里iDST SLQA 技术

来源:网络大数据概要:微软和阿里巴巴开发的人工智能在斯坦福阅读理解测试中并列第一,在答案的精确匹配度上比人类高出几个基点。微软和阿里巴巴开发的人工智能在斯坦福阅读理解测试中并列第一,在答案的精确匹配度上比人类高出几个…