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 ...
随机推荐
- C++左值右值完美转发转移
左值(Lvalue)与右值(Rvalue) 英文含义: 左值(Lvalue):Locator value,意味着它指向一个具体的内存位置. 右值(Rvalue):Read value,指的是可以读取的 ...
- 如何使用疯狂URL获取抖音推流码地址(抖音推流码地址获取教程)
本节所用到的工具:疯狂URL.OBS推流工具 什么是推流地址? 平时我们如果是下载直播,叫拉流.但如果是你自己要直播,属于上传直播流数据,叫推流,即:把直播流数据推送到视频服务器,然后别人才能看到直播 ...
- Mac下使用Docker快速布署FastGPT实现AI私有知识库
FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理.模型调用等能力.同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景! 官网地址为:https: ...
- hire 聘用 受雇 租金 单词记忆
hire 基本解释 vt. 聘用:录用:雇用:租用 vi. 受雇:得到工作 n. 租金:酬金,工钱:[非正式用语] 被雇佣的人:销售部的两个新雇员 来自Proto-Germanic*hurjan,租, ...
- 在salesforce中如何获取Security Token
Trailhead练习Soap API使用Soap UI时,需要Security Token才能登录,在Lightning一直找不到,后来切换到Classic才找到.现在提供一个简单粗暴的方式,快速定 ...
- 吐槽 Android的WebView的pauseTimers方法神坑 webview加载卡住
原文: 吐槽 Android的WebView的pauseTimers方法神坑 webview加载卡住 | Stars-One的杂货小窝 说明 之前公司的项目和别的公司一起合作,忽然出现情况,进入到他们 ...
- js实现回调功能实例
所谓js回调,本人认为无非就是一个函数的参数是另外一个函数,而作为参数的函数就称之为回调函数 <script type="text/javascript"> //要请 ...
- Spring Boot学习日记9
在springboot项目中的resources目录下新建一个文件 application.yml 编写一个实体类 Dog: package com.example.springboot02confi ...
- verilog之原语设计
verilog之原语设计 1.原语作用 在一般的verilog设计中,一般采用数字逻辑设计,由软件将数字逻辑转化为特定的数字电路.但是,对于某些特殊的领域,有可能需要用户直接自定义数字电路以达到对指定 ...
- CentripetalNet:更合理的角点匹配,多方面改进CornerNet | CVPR 2020
CentripetalNet的核心在于新的角点匹配方式,额外学习一个向心偏移值,偏移值足够小的角点即为匹配,相对于embedding向量的匹配方式,这种方法更为鲁棒,解释性更好.另外论文提出的十字星变 ...