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 ...
随机推荐
- 【MongoDB详细步骤】(内附源码)
第01章-MongoDB 1.安装和启动(docker方式) 1.1.拉取镜像 docker pull mongo:4.4.8 1.2.创建和启动容器 docker run -d --restart= ...
- SelectZenEmpty 下拉框 支持 最大长度 超出... vue 组件
<template> <Select v-model="innerValue" :disabled="disabled" :clearable ...
- idea branch 分支比较 | git 查看分支命令 `git branch -vv`
git 查看分支命令 git branch -vv
- 宁波市ctf线下赛awd总结
这是第四届宁波市ctf比赛的线下awd经验总结. 由于主办方的服务器出错,原定于14:00开始的比赛,最后17:30才开始,一直打到20:30. 并且突然改了一部分比赛方式,取消了前30分钟的加固时间 ...
- [极客大挑战 2019]web部分题解(已完结!)
SQL部分: [极客大挑战 2019]BabySQL 打开环境后有登录界面◕‿◕ 一眼注入,后先试试万能密码: username:admin' or '1'='1 password:1 GG,出大问题 ...
- JavaScript利用反射实现方法注入
1. 引言 反射是一种能够在程序运行时动态访问.修改某个类(对象)中属性和方法的机制 JavaScript在ES6中提供了Reflect 这一个内置的对象,它提供拦截 JavaScript 操作的方法 ...
- 记录--vue3实现excel文件预览和打印
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 在前端开发中,有时候一些业务场景中,我们有需求要去实现excel的预览和打印功能,本文在vue3中如何实现Excel文件的预览和打印 ...
- 测试监控系列:使用vb批量统计nmon结果
适用于一次统计几十台机器的nmon监控结果. 新建excel,在设置里打开开发者工具,点查看代码,把下面代码贴到模块里即可.最后把表格保存为.xlsm Sub for_nmon()'用来统计nmon结 ...
- 记一次 .NET某防伪验证系统 崩溃分析
一:背景 1. 讲故事 昨晚给训练营里面的一位朋友分析了一个程序崩溃的故障,因为看小伙子昨天在群里问了一天也没搞定,干脆自己亲自上阵吧,抓取的dump也是我极力推荐的用 procdump 注册 AED ...
- KingbaseES中不同user之间的权限关系
1.概念 1.schema是每个database中特有的. schema概念有点像命名空间,这个逻辑空间包含若干表对象. 在DB里面,有了schema才可以创建对象,对象需要依赖于schema,默认为 ...