处理xml数据

工具类:处理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;
    

    }
    }

猜你喜欢

转载自blog.csdn.net/qq_43034494/article/details/90200132