XStream 工具类 [ XmlUtil ]
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 ]的更多相关文章
- xml文档的解析并通过工具类实现java实体类的映射:XML工具-XmlUtil
若有疑问,可以联系我本人微信:Y1141100952 声明:本文章为原稿,转载必须说明 本文章地址,否则一旦发现,必追究法律责任 1:本文章显示通过 XML工具-XmlUtil工具实现解析soap报文 ...
- XML工具类 - XmlUtils.java
XML工具类,提供序列化XML.反序列化XML.获取指定节点的值的方法. 源码如下:(点击下载 - XmlUtils.java.dom4j-1.6.1.jar.xstream-1.4.7.jar ) ...
- 【java工具类】java做的一个xml转Excel工具,基于maven工程
说明:适合数据库导出为xml时转成Excel 本工具将上传至GitHub:https://github.com/xiaostudy/xiaostudyAPI3 doc4j的maven依赖 <!- ...
- Android工具类整合
Android-JSONUtil工具类 常用的Json工具类,包含Json转换成实体.实体转json字符串.list集合转换成json.数组转换成json public class JSONUtil ...
- XML序例化工具类
Model: [XmlRoot(ElementName = "root")] public class BookModel { [XmlElement] public string ...
- DOM4j XML 工具类
之前项目有跟客户系统对接一个webservice系统,该接口有传参和返回都是xml,所以找时间百度研究了一下dom4j,dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件 ...
- XML读写工具类
摘要:①读取XML文件,生成pojo对象:②将对象信息保存到xml中. 步骤: ①新建一个普通的java类BasePage: package com.test.selenium.pages; impo ...
- hutoolJava工具类的使用
前言 安装 友情开源项目 Hutool相关博客(软文) 捐赠使用公开 核心(Hutool-core) 克隆 支持泛型的克隆接口和克隆类 类型转换 类型转换工具类-Convert 自定义类型转换-Con ...
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
随机推荐
- HDU 5532——Almost Sorted Array——————【技巧】
Almost Sorted Array Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- hash冲突解决和javahash冲突解决
其实就是四种方法的演变 1.开放定址法 具体就是把数据的标志等的对长度取模 有三种不同的取模 线性探测再散列 给数据的标志加增量,取模 平方探测再散列 给数据的标志平方,取模 随机探测再散列 把数据的 ...
- flash系统奔溃的主要原因
1.内存泄露(内存超过系统允许的最大限制,11.4版本为2G) 2.脚本死循环 3.舞台内元件的大小超出了系统限制
- 处理http请求时,如何处理url的参数
1.@PathVariable 获取url中的数据 这种写法显得简洁 也可以把参数写在前面 @RequestParam 获取请求参数的值 适合传统的get提交参数的获取 给参数id设置一个默认值 不传 ...
- 在CentOS上配置MySQL服务
#!/bin/sh # Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB & Detron HB # Thi ...
- 浅谈SQL Server中的事务日志(二)----事务日志在修改数据时的角色
简介 每一个SQL Server的数据库都会按照其修改数据(insert,update,delete)的顺序将对应的日志记录到日志文件.SQL Server使用了Write-Ahead logging ...
- rollback
savepoint test; rollback to savepoint test;
- layui文档阅读进度
2017年1月9日22:13:28已看完layer弹出层部分 2017年1月9日19:15:55http://www.layui.com/doc/modules/layer.html#layer.lo ...
- vue - 绑定css、style
1.绑定html css1.1对象语法: 传给 v-bind:class 一个对象,以动态地切换 class <div v-bind:class="{ active: isActive ...
- 有趣的回文数(Palindrome number)
文章转自http://blog.163.com/hljmdjlln@126/blog/static/5473620620120412525181/ 做LC上的题"Palindrome num ...