java实体 和 xml相互转换
参考:
https://blog.csdn.net/LookForDream_/article/details/88884316
https://zhuchengzzcc.iteye.com/blog/1838702
核心代码
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter; import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import dns.rsdnscount.entity.SlaveEntity;
import dns.rsdnscount.entity.SlavesEntity; public class XmlUtils { private static Logger logger = LoggerFactory.getLogger(XmlUtils.class); public static void main(String[] args) {
/* SlavesEntity list=new SlavesEntity(); SlaveEntity ent=new SlaveEntity();
ent.setHost("master");
ent.setPort("3306");
ent.setUserName("user1");
ent.setRemoteResultPath("/home/user");
list.getEntitys().add(ent);
SlaveEntity ent2=new SlaveEntity();
ent2.setHost("master2");
ent2.setPort("3306");
ent2.setUserName("user2");
ent2.setRemoteResultPath("/home/user2");
list.getEntitys().add(ent2);
String xxx=convertToXml(list,"utf-8",true);
System.out.println(xxx);*/
try {
SlavesEntity ents=convertToJava(new File("conf/slaves.xml"), SlavesEntity.class);
for (SlaveEntity ent : ents.getEntityList()) {
System.out.println(ent);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } /**
* JavaBean转换成xml
*
* @param obj
* @param encoding
* @return
*/
public static String convertToXml(Object obj, String encoding, boolean format) {
String result = null;
StringWriter writer = null;
try {
JAXBContext context = JAXBContext.newInstance(obj.getClass());
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, format);
marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
writer = new StringWriter();
marshaller.marshal(obj, writer);
result = writer.toString();
} catch (Exception e) {
logger.error(e.getMessage(), e);
} finally {
if (writer != null){
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return result;
} /**
* xml转换成JavaBean
*
* @param xml
* @param c
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T convertToJava(String xml, Class<T> c) {
if (xml == null || xml.equals(""))
return null;
T t = null;
StringReader reader = null;
try {
JAXBContext context = JAXBContext.newInstance(c);
Unmarshaller unmarshaller = context.createUnmarshaller();
reader = new StringReader(xml);
t = (T) unmarshaller.unmarshal(reader);
} catch (Exception e) {
logger.error(e.getMessage(), e);
} finally {
if (reader != null)
reader.close();
}
return t;
} @SuppressWarnings("unchecked")
public static <T> T convertToJava(File filePath, Class<T> c) throws IOException {
if (!filePath.exists())
return null;
T t = null;
FileReader reader = null;
try {
JAXBContext context = JAXBContext.newInstance(c);
Unmarshaller unmarshaller = context.createUnmarshaller();
reader = new FileReader(filePath);
t = (T) unmarshaller.unmarshal(reader);
} catch (Exception e) {
logger.error(e.getMessage(), e);
} finally {
if (reader != null)
reader.close();
}
return t;
}
}
实体类
import java.util.LinkedList; import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement; @XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="slavesList")
public class SlavesEntity{ @XmlElementWrapper(required=true,name="entitys")
@XmlElement(name="entity")
LinkedList<SlaveEntity> entityList=new LinkedList<SlaveEntity>(); public LinkedList<SlaveEntity> getEntityList() {
return entityList;
} public void setEntityList(LinkedList<SlaveEntity> entityList) {
this.entityList = entityList;
} }
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = {
"host",
"port",
"userName",
"remoteResultPath",
})
public class SlaveEntity { String host;
String userName;
String port;
@XmlElement(required=false,name="remoteResultPath")
String remoteResultPath; public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
public String getRemoteResultPath() {
return remoteResultPath;
}
public void setRemoteResultPath(String remoteResultPath) {
this.remoteResultPath = remoteResultPath;
}
@Override
public String toString() {
return "SlaveEntity [host=" + host + ", userName=" + userName + ", port=" + port + ", remoteResultPath="
+ remoteResultPath + "]";
}
}
java实体 和 xml相互转换的更多相关文章
- java对象与xml相互转换 ---- xstream
XStream是一个Java对象和XML相互转换的工具,很好很强大.提供了所有的基础类型.数组.集合等类型直接转换的支持. XStream中的核心类就是XStream类,一般来说,熟悉这个类基本就够用 ...
- 玩转Java对象和XML相互转换
最近在项目中一直出现Java对象和XML之间的相互转换,一开始由于项目很庞大,我又是临时调度过去,导致在按照项目组长的要求进行写代码的同时,总是在这块云里雾里,最近才慢慢开始搞清楚项目中具体的使用缘由 ...
- java对象与xml相互转换工具类
public class XmlHelper { /** * Object转XML * * @param object * @return * @throws Exception */ public ...
- 复杂的xml转化为java实体
一.样例一: 以根据订单号向支付宝查询支付是否成功为例(成功信息) 失败信息: <?xml version="1.0" encoding="utf-8"? ...
- 利用JAXB实现java实体类和xml互相转换
1.应用场景 在使用WebService实现数据上传下载,数据查询时,可以利用JAXB实现java实体类和xml互相转换 2.Demo 2.1 student.java 实体类,包含list(set同 ...
- java中的xml与实体类之间的映射
实体类: package xml; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class User ...
- xml文档的解析并通过工具类实现java实体类的映射:XML工具-XmlUtil
若有疑问,可以联系我本人微信:Y1141100952 声明:本文章为原稿,转载必须说明 本文章地址,否则一旦发现,必追究法律责任 1:本文章显示通过 XML工具-XmlUtil工具实现解析soap报文 ...
- C#实体类与XML相互转换
1.实体类与XML相互转换 将实体类转换成XML需要使用XmlSerializer类的Serialize方法,将实体类序列化. 把XML转换成相应的实体类,需要使用到XmlSerializer类的De ...
- json相关类库,java对象与json相互转换
有效选择七个关于Java的JSON开源类库 转自:http://www.open-open.com/lib/view/open1397870197828.html 翻译: (英语原文:http://w ...
随机推荐
- 使用system V实现读者写者问题
#include <stdio.h> #include <sys/sem.h> #include <sys/ipc.h> #include <string.h ...
- 数据分析常用的Excel函数
Excel是我们工作中经常使用的一种工具,对于数据分析来说,这也是处理数据最基础的工具. 本文对数据分析需要用到的函数做了分类,并且有详细的例子说明,文章已做了书签处理,点击可跳转至相应位置. 函数分 ...
- Leetcode练习题 7. Reverse Integer
7. Reverse Integer 题目描述: Given a 32-bit signed integer, reverse digits of an integer. Example 1: Inp ...
- WEB测试应该注意哪些地方,怎样才能做好WEB测试
基于Web的系统测试与传统的软件测试既有相同之处,也有不同的地方,对软件测试提出了新的挑战.基于Web的系统测试不但需要检查和验证是否按照设计的要求运行,而且还要评价系统在不同用户的浏览器端的显示是否 ...
- Spring源码系列 — Bean生命周期
前言 上篇文章中介绍了Spring容器的扩展点,这个是在Bean的创建过程之前执行的逻辑.承接扩展点之后,就是Spring容器的另一个核心:Bean的生命周期过程.这个生命周期过程大致经历了一下的几个 ...
- C# 方法默认访问级别 : private C# 类默认访问级别 : internal
C# 方法默认访问级别 : private C# 类默认访问级别 : internalpublic:访问不受限制.protected:访问仅限于包含类或从包含类派生的类型.Internal:访问仅限于 ...
- SqlServer 创建数据库两种方式
一个SqlServer 数据库实例大概可以创建三万多个数据库. 创建数据库的第一种方式:SqlServer Management Studio管理工具进行可视化创建. 1).打开数据库管理工具,在&q ...
- C# 调用腾讯即时通信 IM
IM SDK API 概述 https://cloud.tencent.com/document/product/269/33543 /// <summary> /// IM SDK 初始 ...
- MySQL入门——在Windows下安装MySQL
MySQL入门——在Windows下安装MySQL 摘要:本文主要说明了如何下Windows环境下安装MySQL. 查看电脑上是否安装了MySQL 打开cmd窗口,输入 services.msc 命令 ...
- python网络编程-2
1.理解相关概念 #浅显理解下 对比cpu与io的差距如:io从硬盘读取一条数据9ms ,cpu在9ms可以做450万次指令 cpu切换上下文的方式:1.遇到io操作切换cpu 2.cpu时间片分配 ...