很多朋友对于使用JAXB在Java中将实体类数据以XML格式保存到本地文件系统和不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
简单实现
首先我们看一下需要保存的数据类。它实际上是一个很常见的java实体类。
公开课学生{
私有int id;
私有字符串名称;
公共学生(int id,字符串名称){
这个.id=id;
this.name=名称;
}
公共int getId() {
返回ID;
}
公共无效setId(int id){
这个.id=id;
}
公共字符串getName() {
返回名称;
}
公共无效setName(字符串名称){
this.name=名称;
}
}由于可能需要保存多个账户信息,因此对上述实体类进行简单封装,作为要存储的实体类对象:
@XmlRootElement
公共类保存数据{
私人名单学生;
@XmlElement(name="学生")
公共ListgetStudents() {
回国学生;
}
公共无效setStudents(列表学生){
this.students=学生;
}
}最后读取数据:
公共类BeanToXml{
公共静态无效主(字符串[] args){
SaveData 数据=new SaveData();
列表列表=新的ArrayList();
list.add(new Student(1,"艾伦"));
list.add(new Student(2,"Tom"));
list.add(new Student(3,"丽丽"));
data.setStudents(列表);
BeanToXmlbeanToXml=new BeanToXml();
beanToXml.saveUserData(数据,SaveData.class);
}
//获取本地保存的文件System.getProperty("user.home") 获取用户的主目录。其他相关值请参见附录。
私有文件getSavePath() {
文件file=new File(System.getProperty("user.home") + File.separator + "test");
if (!file.exists())
文件.mkdir();
file=new File(file.getPath() + File.separator + "test.xml");
返回文件;
}
/**
* 保存数据
*
* @param data 要保存的数据
* @param cls 数据bean的类对象
*/
私有无效saveUserData(T 数据,Classcls) {
尝试{
JAXBContext 上下文=JAXBContext.newInstance(cls);
Marshaller m=context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
//编组XML 并将其保存到文件中。
m.marshal(数据, getSavePath());
} catch (异常e) {
e.printStackTrace();
}
}
私有T loadUserData(Classcls) {
尝试{
JAXBContext 上下文=JAXBContext.newInstance(cls);
解组器um=context.createUnmarshaller();
//从文件中读取XML 并解组。
return (T) um.unmarshal(getSavePath());
} catch (异常e) {
e.printStackTrace();
返回空值;
}
}
}保存本地xml数据:
?xml version="1.0"encoding="UTF-8"standalone="yes"?1Allen2Tom3Lili
扩展
注解说明
第一个是用于标记顶级类或枚举的三个注释。它们可以一起使用并保留到010 -59000。
@XmlAccessOrder:用于标记运行时,将保留为顶级类或包。对从java 对象映射的xml 元素进行排序。有两个值: XmlAccessOrder.UNDEFINED:未排序。这是默认值。
XmlAccessOrder.ALPHABETICAL:按字母顺序排序。
关于使用JAXB在Java中将实体类数据以XML格式保存到本地文件系统到此分享完毕,希望能帮助到您。
【使用JAXB在Java中将实体类数据以XML格式保存到本地文件系统】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
原来可以用JAXB把实体类的数据转换成XML然后存到本地啊!挺有意思的。
有15位网友表示赞同!
之前都不知道这种方法,学习学习,以后可以用在项目里了
有8位网友表示赞同!
这样能灵活管理数据,是不是比单纯写文件方便很多?
有18位网友表示赞同!
JAXB这个工具听起来很专业,有详细教程吗?
有13位网友表示赞同!
XML保存数据确实持久化好一点,Java真是一门强大语言。
有15位网友表示赞同!
实体类直接转 XML 感觉效率还是挺高的。
有12位网友表示赞同!
这种方法能兼容不同的操作系统吗?
有5位网友表示赞同!
我目前刚接触Java,这知识点太新了,先收藏起来慢慢学习吧
有9位网友表示赞同!
这个标题描述很清楚了,看起来入门难度也不高。
有11位网友表示赞同!
我想把一些游戏数据保存到本地文件,这种方法可以吗?
有13位网友表示赞同!
JAXB能实现序列化和反序列化吗?
有19位网友表示赞同!
这篇文章大概讲讲具体的代码示例吗?太抽象了不太理解
有11位网友表示赞同!
用 JAXB 转成 XML 的时候,格式怎么控制啊?
有6位网友表示赞同!
如果文件太大,会影响性能吗?
有6位网友表示赞同!
这种方法有其他的优缺点吗?
有17位网友表示赞同!
JAXB 的安全性怎么样?
有19位网友表示赞同!
听说XML文件比较容易被人解析,这样保存数据安全吗?
有15位网友表示赞同!
有没有其他的技术可以代替 JAXB 实现这种功能呢?
有13位网友表示赞同!
如果要修改文件,要用 JAXB 重新将实体类转 XML 吗?
有14位网友表示赞同!