用dom4j?SAX?no,no,no,光看api和帮助文档就烦,有没有更简单的方法呢?答案是有的。

那就是默默无名的:JAXB

jaxb是啥?

摘抄一段度娘百科的介绍:

JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标志可以转换为JSON对象的JAVA类。JAXB允许JAVA人员将JAVA类映射为XML表示方式,常用的注解包括:@XmlRootElement,@XmlElement等等。
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。
 好的,下面开始介绍java 对象转换为xml
  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超简单的方法的更多相关文章

  1. java操作xml的一个小例子

    最近两天公司事比较多,这两天自己主要跟xml打交道,今天更一下用java操作xml的一个小例子. 原来自己操作xml一直用这个包:xstream-1.4.2.jar.然后用注解的方式,很方便,自己只要 ...

  2. 【Java】详解Java解析XML的四种方法

    XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML.本文将详细介绍用Java解析XML的四种方法. AD: XML现在已经成为一种通用的数据交换格式,它的平台无关性,语 ...

  3. Java操作XML的JAXB工具

    在java中操作XML的工作中中,比较方便的工具是JAXB(Java Architecture for XML Binding). 利用这个工具很方便生成XML的tag和Java类的对应关系.参照网上 ...

  4. Java解析XML的四种方法详解 - 转载

    XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML.本文将详细介绍用Java解析XML的四种方法 在做一般的XML数据交换过程中,我更乐意传递XML字符串,而不是格式化 ...

  5. Java 8 Streams的简单使用方法

    Java 8 Streams的简单使用方法 package JDK8Test; import java.util.ArrayList; public class Main { public stati ...

  6. java解析xml的三种方法

    java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXE ...

  7. 24、java操作xml方法

    XML解析方式 1. SAX解析方式 SAX(simple API for XML)是一种XML解析的替代方法.相比于DOM,SAX是一种速度更快,更有效的方法.它逐行扫描文档,一边扫描一边解析.而且 ...

  8. Java 解析XML的几种方法

    XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便. XML在不同的语言里解析方式都是一样的,只不过实现的语法不同而已. 基本的解析方式 ...

  9. Java操作xml文件

    Bbsxml.java public class Bbsxml { private String imgsrc; private String title; private String url; p ...

  10. 详解Java解析XML的四种方法

    XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM ...

随机推荐

  1. 【MongoDB详细步骤】(内附源码)

    第01章-MongoDB 1.安装和启动(docker方式) 1.1.拉取镜像 docker pull mongo:4.4.8 1.2.创建和启动容器 docker run -d --restart= ...

  2. SelectZenEmpty 下拉框 支持 最大长度 超出... vue 组件

    <template> <Select v-model="innerValue" :disabled="disabled" :clearable ...

  3. idea branch 分支比较 | git 查看分支命令 `git branch -vv`

    git 查看分支命令 git branch -vv

  4. 宁波市ctf线下赛awd总结

    这是第四届宁波市ctf比赛的线下awd经验总结. 由于主办方的服务器出错,原定于14:00开始的比赛,最后17:30才开始,一直打到20:30. 并且突然改了一部分比赛方式,取消了前30分钟的加固时间 ...

  5. [极客大挑战 2019]web部分题解(已完结!)

    SQL部分: [极客大挑战 2019]BabySQL 打开环境后有登录界面◕‿◕ 一眼注入,后先试试万能密码: username:admin' or '1'='1 password:1 GG,出大问题 ...

  6. JavaScript利用反射实现方法注入

    1. 引言 反射是一种能够在程序运行时动态访问.修改某个类(对象)中属性和方法的机制 JavaScript在ES6中提供了Reflect 这一个内置的对象,它提供拦截 JavaScript 操作的方法 ...

  7. 记录--vue3实现excel文件预览和打印

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 在前端开发中,有时候一些业务场景中,我们有需求要去实现excel的预览和打印功能,本文在vue3中如何实现Excel文件的预览和打印 ...

  8. 测试监控系列:使用vb批量统计nmon结果

    适用于一次统计几十台机器的nmon监控结果. 新建excel,在设置里打开开发者工具,点查看代码,把下面代码贴到模块里即可.最后把表格保存为.xlsm Sub for_nmon()'用来统计nmon结 ...

  9. 记一次 .NET某防伪验证系统 崩溃分析

    一:背景 1. 讲故事 昨晚给训练营里面的一位朋友分析了一个程序崩溃的故障,因为看小伙子昨天在群里问了一天也没搞定,干脆自己亲自上阵吧,抓取的dump也是我极力推荐的用 procdump 注册 AED ...

  10. KingbaseES中不同user之间的权限关系

    1.概念 1.schema是每个database中特有的. schema概念有点像命名空间,这个逻辑空间包含若干表对象. 在DB里面,有了schema才可以创建对象,对象需要依赖于schema,默认为 ...