pom.xml


<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.10</version>
</dependency>

XmlUtil.java


package com.app.core.util; import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.core.util.QuickWriter;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import com.thoughtworks.xstream.io.naming.NoNameCoder;
import com.thoughtworks.xstream.io.xml.CompactWriter;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.thoughtworks.xstream.io.xml.PrettyPrintWriter;
import com.thoughtworks.xstream.io.xml.XppDriver; import java.io.StringWriter;
import java.io.Writer;
import java.nio.charset.StandardCharsets; public class XmlUtil {
/**
* 转换不带CDDATA的XML
*
* @return
* @
*/
private static XStream getXStream() {
// 实例化XStream基本对象
XStream xstream = new XStream(new DomDriver(StandardCharsets.UTF_8.name(), new NoNameCoder() {
// 不对特殊字符进行转换,避免出现重命名字段时的“双下划线”
public String encodeNode(String name) {
return name;
}
}));
// 忽视XML与JAVABEAN转换时,XML中的字段在JAVABEAN中不存在的部分
xstream.ignoreUnknownElements();
return xstream;
} /**
* 转换带CDDATA的XML
*
* @return
* @
*/
private static XStream getXStreamWithCData() {
// 实例化XStream扩展对象
XStream xstream = new XStream(new XppDriver() {
// 扩展xstream,使其支持CDATA块
public HierarchicalStreamWriter createWriter(Writer out) {
return new PrettyPrintWriter(out) {
// 不对特殊字符进行转换,避免出现重命名字段时的“双下划线”
public String encodeNode(String name) {
return name;
} // 对所有xml节点的转换都增加CDATA标记
protected void writeText(QuickWriter writer, String text) {
writer.write("<![CDATA[");
writer.write(text);
writer.write("]]>");
}
};
}
});
// 忽视XML与JAVABEAN转换时,XML中的字段在JAVABEAN中不存在的部分
xstream.ignoreUnknownElements();
return xstream;
} /**
* 以压缩的方式输出XML
*
* @param obj
* @return
*/
public static String toCompressXml(Object obj) {
XStream xstream = getXStream();
StringWriter sw = new StringWriter();
// 识别obj类中的注解
xstream.processAnnotations(obj.getClass());
// 设置JavaBean的类别名
xstream.aliasType("xml", obj.getClass());
xstream.marshal(obj, new CompactWriter(sw));
return sw.toString();
} /**
* 以格式化的方式输出XML
*
* @param obj
* @return
*/
public static String toXml(Object obj) {
XStream xstream = getXStream();
// 识别obj类中的注解
xstream.processAnnotations(obj.getClass());
// 设置JavaBean的类别名
xstream.aliasType("xml", obj.getClass());
return xstream.toXML(obj);
} /**
* 转换成JavaBean
*
* @param xmlStr
* @param cls
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T toBean(String xmlStr, Class<T> cls) {
XStream xstream = getXStream();
// 识别cls类中的注解
xstream.processAnnotations(cls);
// 设置JavaBean的类别名
xstream.aliasType("xml", cls);
T t = (T) xstream.fromXML(xmlStr);
return t;
} /**
* 以格式化的方式输出XML
*
* @param obj
* @return
*/
public static String toXmlWithCData(Object obj) {
XStream xstream = getXStreamWithCData();
// 识别obj类中的注解
xstream.processAnnotations(obj.getClass());
// 设置JavaBean的类别名
xstream.aliasType("xml", obj.getClass());
return xstream.toXML(obj);
} /**
* 转换成JavaBean
*
* @param xmlStr
* @param cls
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T toBeanWithCData(String xmlStr, Class<T> cls) {
XStream xstream = getXStreamWithCData();
// 识别cls类中的注解
xstream.processAnnotations(cls);
// 设置JavaBean的类别名
xstream.alias("xml", cls);
T t = (T) xstream.fromXML(xmlStr);
return t;
}
}

XStream 工具类 [ XmlUtil ]的更多相关文章

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

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

  2. XML工具类 - XmlUtils.java

    XML工具类,提供序列化XML.反序列化XML.获取指定节点的值的方法. 源码如下:(点击下载 - XmlUtils.java.dom4j-1.6.1.jar.xstream-1.4.7.jar ) ...

  3. 【java工具类】java做的一个xml转Excel工具,基于maven工程

    说明:适合数据库导出为xml时转成Excel 本工具将上传至GitHub:https://github.com/xiaostudy/xiaostudyAPI3 doc4j的maven依赖 <!- ...

  4. Android工具类整合

    Android-JSONUtil工具类 常用的Json工具类,包含Json转换成实体.实体转json字符串.list集合转换成json.数组转换成json public class JSONUtil ...

  5. XML序例化工具类

    Model: [XmlRoot(ElementName = "root")] public class BookModel { [XmlElement] public string ...

  6. DOM4j XML 工具类

    之前项目有跟客户系统对接一个webservice系统,该接口有传参和返回都是xml,所以找时间百度研究了一下dom4j,dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件 ...

  7. XML读写工具类

    摘要:①读取XML文件,生成pojo对象:②将对象信息保存到xml中. 步骤: ①新建一个普通的java类BasePage: package com.test.selenium.pages; impo ...

  8. hutoolJava工具类的使用

    前言 安装 友情开源项目 Hutool相关博客(软文) 捐赠使用公开 核心(Hutool-core) 克隆 支持泛型的克隆接口和克隆类 类型转换 类型转换工具类-Convert 自定义类型转换-Con ...

  9. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

随机推荐

  1. 【蓝牙】蓝牙,调试 hcitool与gatttool实例

    Bluez协议栈在安装完以后,会提供两个命令行调试工具,hcitool与gattool,我们可以根据提供的工具来轻松的调试我们的蓝牙设备,调试BLE设备时,需要获取root权限. 蓝牙设备的开启与关闭 ...

  2. jQuery Validate验证框架详解(转)

    jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一.导入js库 <script type=& ...

  3. Container&injection(容器与注入思想)

    container 为了更好理解JAVA容器,查询了容器的概念以及容器的诞生原因和历史: 容器技术是怎么一个概念呢?其实,IT里的容器技术是英文单词Linux Container的直译.contain ...

  4. ssh无法连接到虚拟机linux系统

     一般ssh连不上虚拟机是防火墙没有放行22端口,用如下命令:(安装ssh服务时应该是放行了22端口的,如果没有则需手动放行22端口)   放行22端口: sudo iptables -I INPUT ...

  5. mysql测试和sysbench工具详解

    前言 作为一名后台开发,对数据库进行基准测试,以掌握数据库的性能情况是非常必要的.本文介绍了MySQL基准测试的基本概念,以及使用sysbench对MySQL进行基准测试的详细方法. 文章有疏漏之处, ...

  6. Java项目性能瓶颈分析及定位(八)——Java线程堆栈分析(五)

    对于CPU而言,常见的瓶颈主要有两种:服务器的压力很小,但是CPU的利用率却很高,这样的性能瓶颈相对比较容易定位(好比我只是说了你一句,你就哭了,你的弱点立马就暴露出来了):给服务器施加的压力很大,但 ...

  7. jupyter notebook 报错 ImportError: No module named matplotlib

    解决办法: 打开Anaconda Prompt  列出conda环境: conda info --envs 结果显示: # conda environments: # tensorflow * D:\ ...

  8. 利用ASP.NET里自带的站点地图工具制作网站站点地图

    站点地图很方便能快速给我们导航我们要去访问的地址,能按层级关系分门别类,给用户一个很好的用户体验,很好的看到自己当前所在的网站位置 站点地图,又称网站地图,它就是一个页面,上面放置了网站上所有页面的链 ...

  9. Spark Streaming与Kafka集成

    Spark Streaming与Kafka集成 1.介绍 kafka是一个发布订阅消息系统,具有分布式.分区化.多副本提交日志特点.kafka项目在0.8和0.10之间引入了一种新型消费者API,注意 ...

  10. myeclipse 10 创建webservice

    java 快捷创建webservice 收集一下,方便一下查阅 详情去看一下这个老哥,里面写得非常详细: http://hyan.iteye.com/ -- http://www.cnblogs.co ...