专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

JavaBean和XML相互转换(二)

  上一篇文章:JavaBean和XML相互转换(一)
  在上一篇文章中我们介绍了JavaBean和XML相互转换使用的工具和相关注解(XmlRootElement、XmlType、XmlAccessorType),在本篇文章中继续学习其他相关注解。
  本篇测试使用的JavaBean同《JavaBean和XML相互转换(一)》,为了方便大家阅读,在本篇冗余之前的代码,如下:学校类:其包括基本类型字段和集合字段学校DataNoArgsConstructorAllArgsConstructorAccessors(chaintrue)publicclassSchool{学校名称privateStringname;学校联系方式privateStringphone;学校地址privateStringaddress;班级privateListClassInfoclasses;}班级类:其包括基本类型字段和集合字段班级DataNoArgsConstructorAllArgsConstructorAccessors(chaintrue)publicclassClassInfo{班级编号privateStringclassNo;班主任privateStringteacher;学生privateListStudentstudents;}学生类:只包括基本类型字段学生DataNoArgsConstructorAllArgsConstructorAccessors(chaintrue)publicclassStudent{学号privateStringno;学生姓名privateStringname;年龄privateIntegerage;家庭地址privateStringaddress;}XmlElement
  标注位置
  FIELD,METHOD,PARAMETER
  是否必须
  非必须
  注解作用JavaBean属性和XML标签相互映射,该注解主要讲解两个属性:name:JavaBean属性与该属性指定的XML标签映射,如果未设置,默认为JavaBean属性名称type:当注解标注的属性为接口或父类时,转换时需要指定实现类或子类的类型,否则无法转换
  使用该注解的场景一般是XML标签与相应的JavaBean属性名称不同,或JavaBean属性类型为接口或父类测试name属性
  修改学生类,给address属性添加注解,其他不变,如下所示:DataToStringNoArgsConstructorAllArgsConstructorAccessors(chaintrue)XmlRootElementXmlAccessorType(XmlAccessType。FIELD)publicclassStudent{省略不变的属性家庭地址XmlElement(nameADDRESS)privateStringaddress;}
  测试代码:publicclassXmlBeanMapperTest{privatestaticfinalStringXMLlt;?xmlversion1。0encodingUTF8standaloneyes?student北京市长安街001号address25agename张三nameno1001nostudent;测试{linkXmlElement}注解TestpublicvoidtestXmlElement(){StudentstudentnewStudent(1001,张三,25,北京市长安街001号);Console。log(JAXBUtil。beanToXml(student));Console。log(JAXBUtil。xmlToBean(XML,Student。class));}}
  执行测试代码,结果如下:lt;?xmlversion1。0encodingUTF8standaloneyes?studentno1001noname张三name25age北京市长安街001号ADDRESSstudentStudent(no1001,name张三,age25,addressnull)
  通过上面测试结果可以看到,JavaBean转XML后,address属性对应XML的标签为ADDRESS。反之XML字符串中address标签也无法映射到address属性上。测试type属性
  创建装扮接口BaseDress:装扮接口XmlAccessorType(XmlAccessType。FIELD)publicinterfaceBaseDress{}
  因为在本示例中使用LombokData注解,所以需要将注解XmlAccessorTypevalue设置为FIELD,而且该注解具有继承性(注解使用Inherited元注解),为了不用每个实现类重复添加,所以在接口上统一添加该注解。
  修改学生类,添加类型为BaseDress的新属性dress,如下所示:DataToStringNoArgsConstructorAllArgsConstructorAccessors(chaintrue)XmlRootElementXmlAccessorType(XmlAccessType。FIELD)publicclassStudent{不变的属性省略装扮XmlElement(typeNurseDress。class)privateBaseDressdress;}
  因为dress属性的类型是接口,JAXB无法处理接口类型的属性,所以需要使用XmlElement注解type设置对应实现类的类型。这就造成我们无法使用Java多态特性。
  新增BaseDress实现类NurseDress,如下所示:护士装扮DataToStringNoArgsConstructorAllArgsConstructorAccessors(chaintrue)publicclassNurseDressimplementsBaseDress{上衣privateStringblouse;裙子privateStringskirt;}
  测试代码如下:publicclassXmlBeanMapperTest{测试{linkXmlElement}注解TestpublicvoidtestXmlElement(){StudentstudentnewStudent(1001,张三,25,北京市长安街001号,newNurseDress(红色上衣,绿色裙子));Console。log(JAXBUtil。beanToXml(student));}}
  运行测试类,结果如下:lt;?xmlversion1。0encodingUTF8standaloneyes?studentno1001noname张三name25age北京市长安街001号ADDRESSdressblouse红色上衣blouseskirt绿色裙子skirtdressstudentXmlElements
  在XmlElement测试中,有个问题就是如果类的属性类型为接口或抽象类,必须使用XmlElement注解type属性指定实现类或子类类型,否则会抛出异常信息。这样不能使用多态,失去了定义接口或抽象类的意义,有一种妥协的方法就是使用XmlElements注解,如下示例。
  在XmlElement测试类基础上,新增BaseDress实现类MaidDress,如下所示:女仆装扮DataToStringNoArgsConstructorAllArgsConstructorAccessors(chaintrue)XmlRootElement(namejar)publicclassMaidDressextendsBaseDress{上衣privateStringblouse;裙子privateStringskirt;}
  修改学生类,修改dress属性注解,如下所示:DataToStringNoArgsConstructorAllArgsConstructorAccessors(chaintrue)XmlRootElementXmlAccessorType(XmlAccessType。FIELD)publicclassStudent{不变的属性省略装扮XmlElements({XmlElement(typeNurseDress。class),XmlElement(typeMaidDress。class)})privateBaseDressdress;}
  将XmlElement注解更换为XmlElements注解,并设置其value属性为可能赋值的BaseDress接口实现类类型数组
  运行测试类,测试结果如下:lt;?xmlversion1。0encodingUTF8standaloneyes?studentno1001noname张三name25age北京市长安街001号addressdressblouse红色上衣blouseskirt粉红色裙子skirtdressstudentStudent(no1001,name张三,age25,address北京市长安街001号,dressnull)
  可以正常执行,只要赋值的类型在指定的XmlElement数组中,就可以映射XmlTransient
  标注位置
  FIELD,METHOD,TYPE
  是否必须
  非必须
  注解作用
  JavaBean属性和XML标签相互映射是忽略标注该注解的属性
  修改学生类,在address属性上添加该注解,如下所示:DataToStringNoArgsConstructorAllArgsConstructorAccessors(chaintrue)XmlRootElementXmlAccessorType(XmlAccessType。FIELD)publicclassStudent{不变的属性省略家庭地址XmlTransientprivateStringaddress;}
  测试类如下:publicclassXmlBeanMapperTest{privatestaticfinalStringXMLlt;?xmlversion1。0encodingUTF8standaloneyes?student北京市长安街001号address25agename张三nameno1001nostudent;测试{linkXmlTransient}注解TestpublicvoidtestXmlTransient(){StudentstudentnewStudent(1001,张三,25,北京市长安街001号);Console。log(JAXBUtil。beanToXml(student));Console。log(JAXBUtil。xmlToBean(XML,Student。class));}}
  运行测试类,结果如下:lt;?xmlversion1。0encodingUTF8standaloneyes?studentno1001noname张三name25agestudentStudent(no1001,name张三,age25,addressnull)XmlAttribute
  标注位置
  FIELD,METHOD
  是否必须
  非必须
  注解作用
  将JavaBean的属性与XML标签的属性相互映射
  修改学生类,在address属性上添加该注解,如下所示:DataToStringNoArgsConstructorAllArgsConstructorAccessors(chaintrue)XmlRootElementXmlAccessorType(XmlAccessType。FIELD)publicclassStudent{不变的属性省略家庭地址XmlAttributeprivateStringaddress;}
  测试类同XmlTransient注解中的测试类,运行后结果如下:lt;?xmlversion1。0encodingUTF8standaloneyes?studentaddress北京市长安街001号no1001noname张三name25agestudentStudent(no1001,name张三,age25,addressnull)
  通过上面的结果可以看到学生类address属性映射到了XMLstudent标签的address属性
  由于内容较多,其他内容详见下一篇文章,如果文章对大家有所帮助,欢迎点赞、关注、评论。

波兰要求德国赔偿二战损失,当年日本是如何赖掉巨额战争赔款的?如果您喜欢这篇文章,请点击右上方的关注。感谢您的支持和鼓励,希望能给您带来舒适的阅读体验。9月1日,对于世界人民而言,这是第二次世界大战正式爆发的纪念日。而对于波兰人民而言,这是德人民日报金句摘抄那些暗自努力的时光,终会照亮前行路1。新时代饱含新期待,新征程呼唤新作为。2。警灯闪烁,照亮大街小巷警徽熠熠,守望千家万户。3。只有心中常常牵挂,才会时时放心不下。4。同心向党盼盛会,奋楫扬帆启新程。5。蓝图绘就,中国男女乒全胜晋级世乒赛16强,淘汰赛中瑞男团落入同一半区记者王曾成北京时间2022年10月4日,世乒赛团体赛中国男女队陆续迎来小组赛最后一个对手。在已经提前锁定淘汰赛资格的情况下,中国男队30击败泰国队,中国女队30战胜马来西亚队,均收世乒赛中国男女队小组赛四战全胜携手晋级世乒赛综合中国男女队小组赛四战全胜携手晋级新华社成都10月4日电(记者陈地)4日,在成都进行的2022年第56届世界乒乓球团体锦标赛(决赛)最后一轮小组赛中,中国男女队以30的比分世乒赛淘汰赛抽签揭晓中国男队或提前迎来重大考验4日晚,第56届世界乒乓球团体锦标赛(决赛)进行了淘汰赛抽签,中国男队与本次世乒赛目前来看最强的竞争对手瑞典队落入了同一半区,两队或将在四分之一决赛遭遇。瑞典队阵中除了休斯敦世乒赛中国篮协主席姚明女篮成绩是惊喜,但不能头脑发热中国女篮获得世界杯亚军后,作为领队随队出征的中国篮协主席姚明接受记者专访时表示,取得佳绩是这支队伍近10年来积累的结果,惊喜过后还是要冷静科学地总结分析,拿出框架计划,推动女篮运动这就是稳!世乒赛中国男队女队8战全胜昂首步入下一轮极目新闻记者陈凌燕一切如预期,10月4日,2022年第56届世界乒乓球团体锦标赛(决赛)小组赛四轮战罢,中国男队中国女队各以4场全胜的战绩,昂首步入下一轮。中国男队对阵泰国男队,率中国篮球迎喜讯,李梦做出难得表态,恭喜姚明,球迷点赞声一片北京时间月日,中国篮球传来最新消息,中国女篮名将李梦在面对球迷质疑时做出难得表态,她表示不在乎键盘侠的话,她要用成绩说话,这样的情况对于中国篮球来说,显然是个重大喜讯。李梦作为本届如何提升自己?如何寻找自己的目标?1。关于如何提升自己?最为关键的一点是得对自己下狠心,要有改变自己的决心,很多人刚开始的时候有,但做事三分钟热度。做任何事最最最重要的就是坚持,也是最难的。神仙本是凡人做,只怕凡人31!巴黎太猛,豪取7连胜,目标9分,梅西冲本菲卡首球10月6日凌晨,欧冠第3轮继续进行,巴黎圣日耳曼客场挑战本菲卡,加尔蒂埃渴望战胜对手,拿满三分。在赛前,两队同积6分,巴黎以进球多力压本菲卡,领跑积分榜。巴黎近况如日中天,豪取7连北京又一景点走红,适合十一遛娃拍照,还有丰富的娱乐游玩项目谈北京躲不开天安门,以及她门前的那个号称世界第一的广场。天安门广场上,今年的巨型花果篮顶高18米。以喜庆的花果篮为主景,篮内主花材选取了十种花卉和十种水果,象征十全十美,体现花团锦
借壳击败北京国安,姚军和他的流浪足球队2022年11月17日,战胜北京国安之后,北海极驰所有的参赛球员拍了一张合照,最后一排右数第三人为俱乐部创始人姚军。(受访者供图图)2022年11月17日,中国足球爆出史上最大冷门太平寺足球的故事(冬季的寒冷)太平寺足球的故事(冬季的寒冷)享受快乐足球的日子世界杯比赛如火如荼的进行,足球运动进入了一个迷茫的动荡时期,没有了绝对的强队,没有了绝对的弱旅,超级新星暂时未蹦出来,几乎全部队伍都世界杯1战胜加拿大,以小组第一晋级北京时间2022年12月1日2300,小组赛F组最后一轮比赛,加拿大迎战摩洛哥,齐耶赫帮助球队开局四分钟就取得领先,恩内斯里破门,阿格尔德乌龙,最终摩洛哥21战胜加拿大,以小组第一C组解套阿根廷后来居上,波兰出线谢沙特谢自己波兰02阿根廷,沙特12墨西哥,C组最后2场比赛彻底解套首轮意外告负的阿根廷两连胜小组头名出线,而沙特在比赛最后关头诠释了纯粹的足球精神,他们补时第5分钟对自己无关紧要的进球帮助今脾胃出现问题,小腿会提前告诉你,4个现象暗示你关注健康中医认为脾胃是后天之根本,可以控制身体肌肉。换句话说,脾胃健康与否,可以通过我们的小腿来看出来。脾胃有问题的时候,小腿会出现什么表现?1小腿皮肤温度变高当人体出现了脾阳虚的时候,那吃橙子与喝橙汁哪个更有营养?结论出乎想象可能大家觉得,按常理来说,都觉得喝橙汁应该比吃橙子有营养。猜猜哪个更有营养?其实,在榨完橙汁后,膳食纤维会被过滤掉很大一部分,而且糖分也会超标,对健康有一定的影响。喝橙子与吃橙子,指压妇科三阴交治痛经痛经,不知折磨了多少女性。难道除了止痛药,就没有别的方法可以缓解痛苦了吗?当然不是。中医有一个三阴交穴,又称女三里妇科三阴交。顾名思义,此穴对妇症甚有疗效,如经期不顺,白带月经过多冬天用它做主食,养脾健胃,比米饭面条更进补,还能散结节最近天气越来越冷,不少女性朋友就问我,到了冬天怎么进补比较好呢?看来大家都是有这方面的健康养生意识的,今天就来讲讲进补。中医讲冬主收藏,这个时候万物休整,人也应该顺应时令,遵循冬藏古稀之年谈养生(57)今天我来谈一下(淫)这个人类的大敌!世界上的事情都是两分法,不是一点论。任何事情都是辩证的,既有好的一面也有坏的一面。下面我们来具体地分析一下这个淫!淫,分为正淫和邪淫,什么是正淫一级致癌物被揪出,世卫组织立即停止食用,管住嘴就是赢一说到癌症可能大多数人都会感觉到非常害怕,因为在人们的认知当中癌症是一种非常可怕的身体疾病,当人们谈论起癌症的时候,往往也会不自觉地提到致癌物。在很多人的认知当中,致癌物往往都是某从肾论治功能障碍,即使得病了也不要自己吓自己从肾论治功能障碍,即使得病了也不要自己吓自己!中医讲,肾贵为先天之本,藏精主生殖和发育,当肾精充足不仅仅宗筋坚韧不拔,精关亦可坚守,即使偶尔出现痿或者泄也会恢复的很快。所以补肾精,
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网