博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
@XmlRootElement的配置
阅读量:7072 次
发布时间:2019-06-28

本文共 2872 字,大约阅读时间需要 9 分钟。

jdk1.8引入了将字段转换为xml文件的东西,先来个编程看看,

import java.io.Serializable;import javax.xml.bind.annotation.*;@XmlRootElement(name = "model")@XmlAccessorType(XmlAccessType.PROPERTY)@XmlAccessorOrder(XmlAccessOrder.ALPHABETICAL)public class User implements Serializable {private String userName;private int age;private String role;private String bibi;public User() {}public User(String userName, int age, String role, String bibi) {    this.userName = userName;    this.age = age;    this.role = role;    this.bibi = bibi;}public String getUserName() {	return userName;}public void setUserName(String userName) {	this.userName = userName;}public int getAge() {	return age;}public void setAge(int age) {	this.age = age;}public String getRole() {	return role;}public void setRole(String role) {	this.role = role;}public String getBibi() {	return bibi;}public void setBibi(String bibi) {	this.bibi = bibi;}@Overridepublic String toString() {    return "User{" +            "userName='" + userName + '\'' +            ", age=" + age +            ", role='" + role + '\'' +            ", bibi='" + bibi + '\'' +            '}';}}复制代码

再写个测试类:

import java.io.File;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;import javax.xml.bind.Marshaller;import javax.xml.bind.Unmarshaller;import org.junit.Test;public class test { @Test public void saveXmlTest() {  User user = new User("ggg", 18, "aaa","qq");  File file = new File("D://hello.xml");  try {      JAXBContext jaxbContext = JAXBContext.newInstance(User.class);      Marshaller marshaller = jaxbContext.createMarshaller();      //格式化输出,即按标签自动换行,否则就是一行输出      marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);      //设置编码(默认编码就是utf-8)      marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");      //是否省略xml头信息,默认不省略(false)      marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);      marshaller.marshal(user, file);  } catch (JAXBException e) {      e.printStackTrace();  }}@Testpublic void getUserTest() {  File file = new File("D://hello.xml");  try {      JAXBContext jaxbContext = JAXBContext.newInstance(User.class);      Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();      User user = (User) unmarshaller.unmarshal(file);      System.out.println(user.toString());  } catch (JAXBException e) {      e.printStackTrace();  }}}复制代码

saveXmlTest()方法是将实体类字段写进xml文件里面,getUserTest()方法是将hello.xml中的字段读取出来;

常用的注解有: @XmlRootElement,将Java类或枚举映射成XML元素根节点,是唯一一个必须注解,name属性指定根节点名称,不指定默认为类名的小写;

@XmlAccessorType,控制字段或属性的序列化。属性XmlAccessType有4个常量值:FIELD表示JAXB将自动绑定Java类中的每个非静态的(static)、非瞬态的(由@XmlTransient标注)字段到XML;PROPERTY表示java对象中所有通过getter/setter方式绑定成属性到XML;PUBLIC_MEMBER表示Java对象中所有的public访问权限的成员变量和通过getter/setter方式访问的成员变量,该值为默认值;NONE表示Java对象的所有属性都不映射为XML的元素;

@XmlTransient ,用于标示在由Java对象映射XML时,忽略此属性,在生成的XML文件中将不出现此元素。(该文章引用了别人的文章,详情看https://www.cnblogs.com/chenbenbuyi/p/8283657.html)

你可能感兴趣的文章
客观看待社保系统管理漏洞
查看>>
【转载】Docker 镜像优化与最佳实践
查看>>
Kepler452b被发现 那么房价缩水究竟有没有指望?
查看>>
向亲戚朋友解释系列之什么是IP,端口和域名
查看>>
高危预警!移动设备安全面临的5大新型威胁
查看>>
Linux中如何查看显卡硬件信息
查看>>
如何在Linux上检测硬盘上的坏道和坏块
查看>>
网络架构之路(一):目标
查看>>
低功耗M2M市场广阔 芯片设计如何降耗
查看>>
软件定义技术存在哪些限制?
查看>>
拨开数据迷雾:如何理清大数据脉络?
查看>>
Java动态绑定机制的内幕
查看>>
Linux下NMAP常用扫描简介(一)
查看>>
云计算正在改变整个ICT世界
查看>>
seo优化中不容忽视的页面优化
查看>>
DPDK成Linux基金会下开源项目
查看>>
《Oracle高性能自动化运维》一一第2章 Oracle内存体系结构 2.0
查看>>
维基解密曝光CIA新路由器网络攻击方式
查看>>
2016年8月印度电信市场表现
查看>>
股东质疑Alphabet管理 皮查伊2亿美元薪酬惹争议
查看>>