工具类:处理xml
package com.cosmosource.core.utils;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.core.util.QuickWriter;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import com.thoughtworks.xstream.io.naming.NameCoder;
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.XmlFriendlyNameCoder;
import com.thoughtworks.xstream.io.xml.XppDomDriver;
import java.io.Writer;
import java.util.List;
/**
-
类名称:XmlUtil
-
类描述:XML工具类
-
创建人:Hsiao Lin
-
修改人:
-
修改时间:2018年10月25日14:42:46
-
修改备注:
-
@version 1.0.0
*/
public class XmlUtil {public static XStream xstream = new XStream(new DomDriver(“UTF-8”, new XmlFriendlyNameCoder("-", "")));
/**
- 将ListObjTank转换为xml
- @param listObj 转换的bean
- @param objClass List的泛型的对象
- @return bean转换为xml
*/
public static String listObjTankToXml(List<?> listObj, Class<?> objClass) {
XStream xStream = getXStream();
//xstream使用注解转换
xStream.processAnnotations(objClass);
xStream.alias(“NewDataSet”, List.class);
xStream.alias(“Table”, objClass);
return xStream.toXML(listObj);
}
/**
- 将bean转换为xml
- @param obj 转换的bean
- @return bean转换为xml
*/
public static String objectToXml(Object obj) {
XStream xStream = getXStream();
//xstream使用注解转换
xStream.processAnnotations(obj.getClass());
return xStream.toXML(obj);
}
/**
- 将xml转换为bean
- @param 泛型
- @param xml 要转换为bean的xml
- @param cls bean对应的Class
- @return xml转换为bean
*/
public static T xmlToObject(String xml, Class cls) {
XStream xstream = new XStream(new DomDriver());
//xstream使用注解转换
xstream.processAnnotations(cls);
return (T) xstream.fromXML(xml);
}
/**
- 将xml转换为ListObjTank
- @param xml 要转换为bean的xml
- @return xml转换为bean
*/
public static List xmlToListObjTank(String xml, Class<?> obj) {
XStream xstream = new XStream(new DomDriver());
//xstream使用注解转换
xstream.processAnnotations(obj);
xstream.processAnnotations(List.class);
xstream.alias(“NewDataSet”, List.class);
xstream.alias(“Table”, obj);
return (List) xstream.fromXML(xml);
}
public static XStream getXStream() {
final NameCoder nameCoder = new NoNameCoder();
XStream xStream = new XStream(new XppDomDriver(nameCoder) {@Override public HierarchicalStreamWriter createWriter(Writer out) { //输出格式化的xml字符串 //return new PrettyPrintWriter(out, nameCoder) { //输出压缩的xml字符串,删除多余的空白符 return new CompactWriter(out, nameCoder) { boolean cdata = false; @Override public void startNode(String name, Class clazz) { super.startNode(name, clazz); // 所有的字符串都加上CDATA标识 cdata = "String".equals(clazz.getSimpleName()); } @Override protected void writeText(QuickWriter writer, String text) { if (cdata) { writer.write("<![CDATA["); writer.write(text); writer.write("]]>"); } else { writer.write(text); } } }; } }); return xStream;
}
}