处理xml数据

这是一个用于处理XML数据的Java工具类,包含将List对象转换为XML、单个对象转换为XML、XML转换为对象以及XML转换为List对象的方法。类中使用了XStream库,支持注解转换并提供了自定义的编码器。

工具类:处理xml
依赖:

    <dependency>
        <groupId>org.dom4j</groupId>
        <artifactId>dom4j</artifactId>
        <version>2.1.1</version>
    </dependency>

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;
    

    }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值