用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. 1 import java.sql.Timestamp;
  2. 2 import java.text.SimpleDateFormat;
  3. 3
  4. 4 import javax.xml.bind.annotation.XmlRootElement;
  5. 5 import javax.xml.bind.annotation.adapters.XmlAdapter;
  6. 6 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
  7. 7
  8. 8 /**
  9. 9 * User entity. @author MyEclipse Persistence Tools
  10. 10 */
  11. 11 @XmlRootElement
  12. 12 public class User implements java.io.Serializable {
  13. 13
  14. 14 // Fields
  15. 15
  16. 16 /**
  17. 17 *
  18. 18 */
  19. 19 private static final long serialVersionUID = 1L;
  20. 20 private Integer id;
  21. 21 private String username;
  22. 22 private String password;
  23. 23 private String sex;
  24. 24
  25. 25 private Timestamp registTime;
  26. 26
  27. 27 // Constructors
  28. 28
  29. 29 /** default constructor */
  30. 30 public User() {
  31. 31 }
  32. 32
  33. 33 /** full constructor */
  34. 34 public User(String username, String password, String sex,
  35. 35 Timestamp registTime) {
  36. 36 this.username = username;
  37. 37 this.password = password;
  38. 38 this.sex = sex;
  39. 39 this.registTime = registTime;
  40. 40 }
  41. 41
  42. 42 // Property accessors
  43. 43
  44. 44 public Integer getId() {
  45. 45 return this.id;
  46. 46 }
  47. 47
  48. 48 public void setId(Integer id) {
  49. 49 this.id = id;
  50. 50 }
  51. 51
  52. 52 public String getUsername() {
  53. 53 return this.username;
  54. 54 }
  55. 55
  56. 56 public void setUsername(String username) {
  57. 57 this.username = username;
  58. 58 }
  59. 59
  60. 60 public String getPassword() {
  61. 61 return this.password;
  62. 62 }
  63. 63
  64. 64 public void setPassword(String password) {
  65. 65 this.password = password;
  66. 66 }
  67. 67
  68. 68 public String getSex() {
  69. 69 return this.sex;
  70. 70 }
  71. 71
  72. 72 public void setSex(String sex) {
  73. 73 this.sex = sex;
  74. 74 }
  75. 75
  76. 76 @XmlJavaTypeAdapter(DateAdapter.class)
  77. 77 public Timestamp getRegistTime() {
  78. 78 return this.registTime;
  79. 79 }
  80. 80
  81. 81 public void setRegistTime(Timestamp registTime) {
  82. 82
  83. 83 this.registTime = registTime;
  84. 84 }
  85. 85 }
  86. 86
  87. 87 /**
  88. 88 * 日期类型得多花点操作和多个适配器
  89. 89 *
  90. 90 * @author Administrator
  91. 91 *
  92. 92 */
  93. 93 class DateAdapter extends XmlAdapter<String, Timestamp> {
  94. 94 private SimpleDateFormat yyyyMMddHHmmss = new SimpleDateFormat(
  95. 95 "yyyy-MM-dd HH:mm:ss:SSS");
  96. 96
  97. 97 @Override
  98. 98 public Timestamp unmarshal(String v) throws Exception {
  99. 99 return new Timestamp(yyyyMMddHHmmss.parse(v).getTime());
  100. 100 }
  101. 101
  102. 102 @Override
  103. 103 public String marshal(Timestamp v) throws Exception {
  104. 104 return yyyyMMddHHmmss.format(v);
  105. 105 }
  106. 106 }

main方法测试代码:

  1. 1 public class Test1 {
  2. 2 public static void main(String[] args) {
  3. 3 File xmlFile = new File("src/user.xml");
  4. 4 try {
  5. 5
  6. 6 JAXBContext jc = JAXBContext.newInstance(User.class);
  7. 7
  8. 8 Marshaller u=jc.createMarshaller();
  9. 9 User user=new User();
  10. 10 user.setId(0);
  11. 11 user.setPassword(UUID.randomUUID().toString().replaceAll("-", ""));
  12. 12 user.setRegistTime(new Timestamp(System.currentTimeMillis()));
  13. 13 user.setSex("男");
  14. 14 user.setUsername("1231123");
  15. 15 u.marshal(user, xmlFile);
  16. 16 } catch (Exception e) {
  17. 17 // TODO: handle exception
  18. 18 }
  19. 19 }
  20. 20 }

xml文件结果:

  1. 1 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. 2 <user>
  3. 3 <id>0</id>
  4. 4 <password>2c892394522c41c29264899cfa9ea565</password>
  5. 5 <registTime>2016-09-16 10:25:33:316</registTime>
  6. 6 <sex>男</sex>
  7. 7 <username>1231123</username>
  8. 8 </user>

是不是很简单?不用dom4j,不用阅读各种api文档,不用网上搜索资料,只需要实体类上面加上注解@XmlRootElement就行了,下面介绍xml转换为java bean:

  1. 1 import java.io.File;
  2. 2
  3. 3 import javax.xml.bind.JAXBContext;
  4. 4 import javax.xml.bind.Unmarshaller;
  5. 5
  6. 6 import com.qhmcc.entity.User;
  7. 7
  8. 8 public class Test1 {
  9. 9 public static void main(String[] args) {
  10. 10 File xmlFile = new File("src/user.xml");
  11. 11 try {
  12. 12
  13. 13 JAXBContext jc = JAXBContext.newInstance(User.class);
  14. 14
  15. 15 Unmarshaller u=jc.createUnmarshaller();
  16. 16 User usr=(User) u.unmarshal(xmlFile);
  17. 17 System.out.println(usr.getUsername());
  18. 18 System.out.println(usr.getPassword());
  19. 19 System.out.println(usr.getSex());
  20. 20 System.out.println(usr.getId());
  21. 21 System.out.println(usr.getRegistTime());
  22. 22 } catch (Exception e) {
  23. 23 e.printStackTrace();
  24. 24 }
  25. 25 }
  26. 26 }

控制台结果如下:

  1. 1 1231123
  2. 2 2c892394522c41c29264899cfa9ea565
  3. 3
  4. 4 0
  5. 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. C++左值右值完美转发转移

    左值(Lvalue)与右值(Rvalue) 英文含义: 左值(Lvalue):Locator value,意味着它指向一个具体的内存位置. 右值(Rvalue):Read value,指的是可以读取的 ...

  2. 如何使用疯狂URL获取抖音推流码地址(抖音推流码地址获取教程)

    本节所用到的工具:疯狂URL.OBS推流工具 什么是推流地址? 平时我们如果是下载直播,叫拉流.但如果是你自己要直播,属于上传直播流数据,叫推流,即:把直播流数据推送到视频服务器,然后别人才能看到直播 ...

  3. Mac下使用Docker快速布署FastGPT实现AI私有知识库

    FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理.模型调用等能力.同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景! 官网地址为:https: ...

  4. hire 聘用 受雇 租金 单词记忆

    hire 基本解释 vt. 聘用:录用:雇用:租用 vi. 受雇:得到工作 n. 租金:酬金,工钱:[非正式用语] 被雇佣的人:销售部的两个新雇员 来自Proto-Germanic*hurjan,租, ...

  5. 在salesforce中如何获取Security Token

    Trailhead练习Soap API使用Soap UI时,需要Security Token才能登录,在Lightning一直找不到,后来切换到Classic才找到.现在提供一个简单粗暴的方式,快速定 ...

  6. 吐槽 Android的WebView的pauseTimers方法神坑 webview加载卡住

    原文: 吐槽 Android的WebView的pauseTimers方法神坑 webview加载卡住 | Stars-One的杂货小窝 说明 之前公司的项目和别的公司一起合作,忽然出现情况,进入到他们 ...

  7. js实现回调功能实例

    所谓js回调,本人认为无非就是一个函数的参数是另外一个函数,而作为参数的函数就称之为回调函数 <script type="text/javascript">  //要请 ...

  8. Spring Boot学习日记9

    在springboot项目中的resources目录下新建一个文件 application.yml 编写一个实体类 Dog: package com.example.springboot02confi ...

  9. verilog之原语设计

    verilog之原语设计 1.原语作用 在一般的verilog设计中,一般采用数字逻辑设计,由软件将数字逻辑转化为特定的数字电路.但是,对于某些特殊的领域,有可能需要用户直接自定义数字电路以达到对指定 ...

  10. CentripetalNet:更合理的角点匹配,多方面改进CornerNet | CVPR 2020

    CentripetalNet的核心在于新的角点匹配方式,额外学习一个向心偏移值,偏移值足够小的角点即为匹配,相对于embedding向量的匹配方式,这种方法更为鲁棒,解释性更好.另外论文提出的十字星变 ...