java操作xml超简单的方法
用dom4j?SAX?no,no,no,光看api和帮助文档就烦,有没有更简单的方法呢?答案是有的。
那就是默默无名的:JAXB
jaxb是啥?
摘抄一段度娘百科的介绍:
1 import java.sql.Timestamp;
2 import java.text.SimpleDateFormat;
3
4 import javax.xml.bind.annotation.XmlRootElement;
5 import javax.xml.bind.annotation.adapters.XmlAdapter;
6 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
7
8 /**
9 * User entity. @author MyEclipse Persistence Tools
10 */
11 @XmlRootElement
12 public class User implements java.io.Serializable {
13
14 // Fields
15
16 /**
17 *
18 */
19 private static final long serialVersionUID = 1L;
20 private Integer id;
21 private String username;
22 private String password;
23 private String sex;
24
25 private Timestamp registTime;
26
27 // Constructors
28
29 /** default constructor */
30 public User() {
31 }
32
33 /** full constructor */
34 public User(String username, String password, String sex,
35 Timestamp registTime) {
36 this.username = username;
37 this.password = password;
38 this.sex = sex;
39 this.registTime = registTime;
40 }
41
42 // Property accessors
43
44 public Integer getId() {
45 return this.id;
46 }
47
48 public void setId(Integer id) {
49 this.id = id;
50 }
51
52 public String getUsername() {
53 return this.username;
54 }
55
56 public void setUsername(String username) {
57 this.username = username;
58 }
59
60 public String getPassword() {
61 return this.password;
62 }
63
64 public void setPassword(String password) {
65 this.password = password;
66 }
67
68 public String getSex() {
69 return this.sex;
70 }
71
72 public void setSex(String sex) {
73 this.sex = sex;
74 }
75
76 @XmlJavaTypeAdapter(DateAdapter.class)
77 public Timestamp getRegistTime() {
78 return this.registTime;
79 }
80
81 public void setRegistTime(Timestamp registTime) {
82
83 this.registTime = registTime;
84 }
85 }
86
87 /**
88 * 日期类型得多花点操作和多个适配器
89 *
90 * @author Administrator
91 *
92 */
93 class DateAdapter extends XmlAdapter<String, Timestamp> {
94 private SimpleDateFormat yyyyMMddHHmmss = new SimpleDateFormat(
95 "yyyy-MM-dd HH:mm:ss:SSS");
96
97 @Override
98 public Timestamp unmarshal(String v) throws Exception {
99 return new Timestamp(yyyyMMddHHmmss.parse(v).getTime());
100 }
101
102 @Override
103 public String marshal(Timestamp v) throws Exception {
104 return yyyyMMddHHmmss.format(v);
105 }
106 }
main方法测试代码:
1 public class Test1 {
2 public static void main(String[] args) {
3 File xmlFile = new File("src/user.xml");
4 try {
5
6 JAXBContext jc = JAXBContext.newInstance(User.class);
7
8 Marshaller u=jc.createMarshaller();
9 User user=new User();
10 user.setId(0);
11 user.setPassword(UUID.randomUUID().toString().replaceAll("-", ""));
12 user.setRegistTime(new Timestamp(System.currentTimeMillis()));
13 user.setSex("男");
14 user.setUsername("1231123");
15 u.marshal(user, xmlFile);
16 } catch (Exception e) {
17 // TODO: handle exception
18 }
19 }
20 }
xml文件结果:
1 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2 <user>
3 <id>0</id>
4 <password>2c892394522c41c29264899cfa9ea565</password>
5 <registTime>2016-09-16 10:25:33:316</registTime>
6 <sex>男</sex>
7 <username>1231123</username>
8 </user>
是不是很简单?不用dom4j,不用阅读各种api文档,不用网上搜索资料,只需要实体类上面加上注解@XmlRootElement就行了,下面介绍xml转换为java bean:
1 import java.io.File;
2
3 import javax.xml.bind.JAXBContext;
4 import javax.xml.bind.Unmarshaller;
5
6 import com.qhmcc.entity.User;
7
8 public class Test1 {
9 public static void main(String[] args) {
10 File xmlFile = new File("src/user.xml");
11 try {
12
13 JAXBContext jc = JAXBContext.newInstance(User.class);
14
15 Unmarshaller u=jc.createUnmarshaller();
16 User usr=(User) u.unmarshal(xmlFile);
17 System.out.println(usr.getUsername());
18 System.out.println(usr.getPassword());
19 System.out.println(usr.getSex());
20 System.out.println(usr.getId());
21 System.out.println(usr.getRegistTime());
22 } catch (Exception e) {
23 e.printStackTrace();
24 }
25 }
26 }
控制台结果如下:
1 1231123
2 2c892394522c41c29264899cfa9ea565
3 男
4 0
5 2016-09-16 10:25:33.316
ps:自定义XMl节点名字一定要在字段的get方法上面添加@XMLElement注解,一定要在get方法,别在字段上面,否则重复
java操作xml超简单的方法的更多相关文章
- java操作xml的一个小例子
最近两天公司事比较多,这两天自己主要跟xml打交道,今天更一下用java操作xml的一个小例子. 原来自己操作xml一直用这个包:xstream-1.4.2.jar.然后用注解的方式,很方便,自己只要 ...
- 【Java】详解Java解析XML的四种方法
XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML.本文将详细介绍用Java解析XML的四种方法. AD: XML现在已经成为一种通用的数据交换格式,它的平台无关性,语 ...
- Java操作XML的JAXB工具
在java中操作XML的工作中中,比较方便的工具是JAXB(Java Architecture for XML Binding). 利用这个工具很方便生成XML的tag和Java类的对应关系.参照网上 ...
- Java解析XML的四种方法详解 - 转载
XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML.本文将详细介绍用Java解析XML的四种方法 在做一般的XML数据交换过程中,我更乐意传递XML字符串,而不是格式化 ...
- Java 8 Streams的简单使用方法
Java 8 Streams的简单使用方法 package JDK8Test; import java.util.ArrayList; public class Main { public stati ...
- java解析xml的三种方法
java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXE ...
- 24、java操作xml方法
XML解析方式 1. SAX解析方式 SAX(simple API for XML)是一种XML解析的替代方法.相比于DOM,SAX是一种速度更快,更有效的方法.它逐行扫描文档,一边扫描一边解析.而且 ...
- Java 解析XML的几种方法
XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便. XML在不同的语言里解析方式都是一样的,只不过实现的语法不同而已. 基本的解析方式 ...
- Java操作xml文件
Bbsxml.java public class Bbsxml { private String imgsrc; private String title; private String url; p ...
- 详解Java解析XML的四种方法
XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM ...
随机推荐
- C++入门编程----C++运算符(8)
什么是运算符 运算符是让程序执行特定的数学或逻辑操作的符号,用来表示针对数据的特定操作,也称之为操作符.C++运算符分别有算术运算符.关系运算符.逻辑运算符.赋值运算符.位运算符.移位运算符.size ...
- flomo 窗口置顶 - 通用方法 autohotkey
需求 开网页的时候需要记录一些东西 想一直显示 操作 要安装 https://www.autohotkey.com/ 创建个 .ahk 文件 运行下 快捷键是 alt+小键盘8 ;置顶当前窗口 !Nu ...
- ohmyposh 安装 - 基于 powershell7.2.1 - 最后改成 profile自定义
今天偶然下载了 powershell7.2.1 https://mydown.yesky.com/pcsoft/468254.html 这想着 vscode也支持了,得装一个 ohmyposh的主题啊 ...
- Java求解汉诺塔
汉诺塔 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗 ...
- Pod中断预算 PodDisruptionBudget(PDB)
PodDisruptionBudget(PDB)是Kubernetes中的一个资源对象,用于确保在进行维护.升级或其他操作时,系统中的Pod不会被意外中断或终止.PDB提供了一种机制,通过限制在给定时 ...
- 用python生成正玄波信号源码解析
一 前记 项目需要生成不同频点的正玄波信号,没找到现成的软件,只能自己写一个了.顺便温习一下python. 二 源码解析: #!/usr/bin/python import numpy as np f ...
- ADS1299芯片datasheet 重点解析
一 START和DRDY的关系 start必须要至少提前拉高2个时钟,才会产生DRDY信号,这个非常关键,也是重心所在.很多遗漏的就不会有DRDY信号出来了. 二 START和DRDY的时序图 sta ...
- Java诊断工具Arthas:开篇之watch实战
Arthas是阿里开源的线上监控诊断产品,用于问题的排查和诊断. 它的出现大大提高线上排查问题的效率,这篇只讲它一个非常牛逼的功能,其它功能往后篇章会在展开详细说. 一.Arthas能为你做什么? 1 ...
- 手把手制作mobileconfig文件,在iphone上创建h5网页桌面图标
1,下载mobileconfig文件制作工具 下载地址:点击关注公众号,回复appicon, 获取工具的下载地址 新建配置描述文件,填写通用信息 填写Web Clip信息 点击菜单栏的导出,注意这里一 ...
- 三维模型3DTile格式轻量化压缩集群处理方法分析
三维模型3DTile格式轻量化压缩集群处理方法分析 在地理信息系统中,由于三维模型的数据密度和文件体积较大,因此需要进行轻量化和压缩处理.这里我们将对使用集群处理方法来实现3D Tiles数据的轻量化 ...