用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. python AI应用开发编程实战 大模型实战基础(数据存储类型列表与字典)(二)

    大模型开发中,需要和自己的业务融合,我们要对自己的数据处理,熟悉外理excle  word  pdf 数据然后处理后可以放到向量数据库,或者直接Assistants API传到大模型引用,不管怎么样数 ...

  2. linux 三剑客命令

    Linux 命令集合 目录 Linux 命令集合 基础概念 1 软连接和硬链接 1.1 基础概念 1.2 如何创建软链接 零.正则 01 区别 02 通配符 03 基础正则 04 扩展正则 一 awk ...

  3. MES集成警报灯系统,Http远程控制系统设计

    核心功能设计 警报灯实机演示:https://www.bilibili.com/video/BV1294y1M7f3?p=2 接受服务器发送http·post请求远程控制警报灯,可接入MES等系统. ...

  4. IO 多路复用原理

    IO 多路复用 普通情况下,一个进程只能监视一个文件描述符(阻塞),如果使用非阻塞 IO,则会使 CPU 频繁陷入内核和空转,降低效率.而IO 多路复用是操作系统提供的接口,他会帮你同时监视多个 fd ...

  5. Rust Rocket简单入门

    目录 简介 hello world 常用功能 动态路径 多个片段(segments) 静态文件服务器 简单WebAPI示例 添加依赖 实现接口 接口测试 参考链接 简介 Rust中最知名的两个web框 ...

  6. Rust使用Sauron实现Web界面交互

    目录 简介 架构 Application 和组件 简单入门示例 先决条件 创建新项目 编译库文件 引用库文件 运行项目 界面交互示例 创建项目 编译库文件 引用库文件 引用库文件 运行项目 参考资料 ...

  7. vue项目 nginx部署

    nginx.conf中的server配置片段 server { listen 8080 ;#默认端口是80,如果端口没被占用可以不用修改 server_name localhost; #charset ...

  8. Ryoku 的新年欢乐赛

    目录 前言 洛谷 6033 Ryoku 的探索 题目 分析 代码 洛谷 6034 Ryoku 与最初之人笔记 题目 分析O(log^2n) 代码(赛时AC) 分析O(logn) 代码(赛后) 洛谷 6 ...

  9. #二分图匹配#UVA1194 Machine Schedule

    题目 有两台机器 \(A,B\) 分别有 \(n,m\) 种模式. 现在有 \(k\) 个任务.对于每个任务 \(i\) ,给定两个整数 \(a_i\) 和 \(b_i\)​, 表示如果该任务在 \( ...

  10. #特殊判断#牛客练习赛71 A 回文数

    题目 分析 首先出现奇数次的数超过1显然无解 并且只有多个0或者只有一个非0数字并且其它都是0也无解 然后由于没有前导0所以先要找到最小的非0数,先占据首尾 最后按照常规方法前一半从左到右依次递增 注 ...