用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实现企业微信自动打卡程序二:跳过节假日,随机打卡时间,定时任务,失败通知

    一.介绍 在上节 Python实现企业微信上下班自动打卡程序内容之后,我们继续优化自动打卡程序.接下来增加如下内容: 实现打卡时间随机范围 处理节假日不打卡的情况 实现定时调度打卡 打卡成功或失败通知 ...

  2. es索引数据复制并增加条件和修改目标数据值

    es操作同一个索引里数据的复制语法 复制数据: POST _reindex { "source": { "index": "source_index& ...

  3. Git: Host key verification failed(主机密钥验证失败)

    换了新电脑Y7000 10750H,之前的项目提示这个,本以为删个什么文件,搜了一阵,没找到答案. 简单粗暴的方法就是再git clone一下,就ok了,这点很不爽.暂时先这么解决了.

  4. 【数据结构】哈夫曼树与哈夫曼编码(Huffman Encoding)

    一.背景 编码是信息处理的基础(重新表示信息). 普通的编码是等长编码,例如7位的ASCIL编码,对出现频率不同的字符都使用相同的编码长度.但其在传输和存储等情况下编码效率不高. 可使用不等长编码,来 ...

  5. QSAN: A Quantum-probability based Signed Attention Network for Explainable False Information Detection-CIKM20

    一.摘要 在社交媒体上的虚假信息检测具有挑战性,因为它通常需要烦冗的证据收集,但又缺乏可用的比较信息.从用户评论中挖掘出的线索作为群体智慧,可能对这项任务有相当大的好处. 然而,考虑到内容和评论的隐式 ...

  6. MD5算法:密码学中的传奇

    MD5算法起源: MD5(Message Digest Algorithm 5)算法是由MIT的计算机科学家Ronald Rivest于1991年设计的一种消息摘要算法.MD5算法最初被用于提供数据完 ...

  7. C#断字符串是否为数字,用正则表达式

  8. WPF 组件间通信 MVVM 进行解耦

    假设有这样一个需求,有这样一个聊天界面,主界面是选项卡,其一选项卡内部是真正的聊天列表和聊天界面,我们需要实时的在主界面显示未读消息的数量 假设我们已经有方法可以拿到未读消息的数量,那么如何在主界面的 ...

  9. CenterNet:Corner-Center三元关键点,检测性能全面提升 | ICCV 2019

    为了解决CornerNet缺乏目标内部信息的问题,提出了CenterNet使用三元组进行目标检测,包含一个中心关键点和两个角点.从实验结果来看,CenterNet相对于CornerNet只增加了少量推 ...

  10. Python 基于 xlsxwriter 实现百万数据导出 excel

    追加导出 + 自动切换 sheet ️ excel 中的每个 sheet 最多只能保存 1048576 行数据 # 获取项目的根路径 rootPath curPath = os.path.abspat ...