参考:

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相互转换的更多相关文章

  1. java对象与xml相互转换 ---- xstream

    XStream是一个Java对象和XML相互转换的工具,很好很强大.提供了所有的基础类型.数组.集合等类型直接转换的支持. XStream中的核心类就是XStream类,一般来说,熟悉这个类基本就够用 ...

  2. 玩转Java对象和XML相互转换

    最近在项目中一直出现Java对象和XML之间的相互转换,一开始由于项目很庞大,我又是临时调度过去,导致在按照项目组长的要求进行写代码的同时,总是在这块云里雾里,最近才慢慢开始搞清楚项目中具体的使用缘由 ...

  3. java对象与xml相互转换工具类

    public class XmlHelper { /** * Object转XML * * @param object * @return * @throws Exception */ public ...

  4. 复杂的xml转化为java实体

    一.样例一: 以根据订单号向支付宝查询支付是否成功为例(成功信息) 失败信息: <?xml version="1.0" encoding="utf-8"? ...

  5. 利用JAXB实现java实体类和xml互相转换

    1.应用场景 在使用WebService实现数据上传下载,数据查询时,可以利用JAXB实现java实体类和xml互相转换 2.Demo 2.1 student.java 实体类,包含list(set同 ...

  6. java中的xml与实体类之间的映射

    实体类: package xml; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class User ...

  7. xml文档的解析并通过工具类实现java实体类的映射:XML工具-XmlUtil

    若有疑问,可以联系我本人微信:Y1141100952 声明:本文章为原稿,转载必须说明 本文章地址,否则一旦发现,必追究法律责任 1:本文章显示通过 XML工具-XmlUtil工具实现解析soap报文 ...

  8. C#实体类与XML相互转换

    1.实体类与XML相互转换 将实体类转换成XML需要使用XmlSerializer类的Serialize方法,将实体类序列化. 把XML转换成相应的实体类,需要使用到XmlSerializer类的De ...

  9. json相关类库,java对象与json相互转换

    有效选择七个关于Java的JSON开源类库 转自:http://www.open-open.com/lib/view/open1397870197828.html 翻译: (英语原文:http://w ...

随机推荐

  1. MyEclipse清除所有断点的方法

    今天调试网站时遇到点奇怪的问题,于是在宠大的代码段里加了N处断点,但从其它项目代码段链接代码加入断点后,关闭标签再次打开时发现断点看不到了,但运行到那段代码时依然会被中断.没有断点标记,不能手动取消怎 ...

  2. github上方便的小工具

    目录 python中的fire模块 Install Reference python中的fire模块 它可以对所有Python 对象,包括functions, classes, modules, ob ...

  3. JQuery插件 aos.js-添加动画效果

    原文地址:http://www.mamicode.com/info-detail-1785357.html 简介: aos.js是一款效果超赞的页面滚动元素动画jQuery动画库插件.该动画库可以在页 ...

  4. Sencha Modern

    Sencha Modern  前言         经过一个月捣鼓,基于sencha公司最新框架版本 ExtJS7.0 modern 的示例代码可以和大家见面了.示例中对系统主题.公共(组件,方法)封 ...

  5. tensorflow之tf.stop_gradient

    停止梯度计算. 当在一个图中执行时, 这个op按原样输出它的输入张量. 当构建ops来计算梯度时,该op会阻止将其输入贡献考虑在内. 参数: Input: 一个张量. name: 操作的名称(可选) ...

  6. Redis学习记录及Jedis代码示例

    文章目录 二.Redis简介 三.Redis安装 1. 下载并解压安装 2. 安装C语言编译环境 3. 修改安装位置 4. 编译安装 5.启动Redis服务器 ①默认启动 ②定制配置项启动 [1]准备 ...

  7. NaN不等于NaN

    目录 原因 表达式计算 类型转换 总结 不知道这个小知识点用得多不多,曾经在书上看到过,所以有一些印象,前段时间顺手写出类似如下的代码 var result; if (parseInt('abc')= ...

  8. 使用SolrJ(即java客户端)开发Solr。

    1.什么是SolrJ呢? 答:Solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务.开始配置schema ...

  9. mockjs 在项目中vue项目中使用

    一.为什么要使用mockjs 总结起来就是在后端接口没有开发完成之前,前端可以用已有的接口文档,在真实的请求上拦截ajax,并根据mockjs的mock数据的规则,模拟真实接口返回的数据,并将随机的模 ...

  10. Docker 容器命令大全

    容器命令: 命令 描述 attach 将本地标准输入,输出和错误流转到到正在运行的容器 build 从Dockerfile构建映像 commit 根据容器的更改创建新镜像 cp 在容器和本地文件系统之 ...