zoukankan      html  css  js  c++  java
  • JAVA XStream的使用

    MAVN包:
    <dependency>
    <groupId>com.thoughtworks.xstream</groupId>
    <artifactId>xstream</artifactId>
    <version>1.4.9</version>
    </dependency>

    过滤不能识别的节点
    package common;

    import com.thoughtworks.xstream.XStream;
    import com.thoughtworks.xstream.mapper.MapperWrapper;

    public class ETLXstream extends XStream {
    /*
    * (non-Javadoc)
    *
    * @see
    * com.thoughtworks.xstream.XStream#wrapMapper
    */
    @Override
    protected MapperWrapper wrapMapper(MapperWrapper next) {
    return new MapperWrapper(next) {
    /*
    * (non-Javadoc)
    *
    * @see
    * com.thoughtworks.xstream.mapper.MapperWrapper#shouldSerializeMember
    */
    @Override
    public boolean shouldSerializeMember(@SuppressWarnings("rawtypes") Class definedIn, String fieldName) {
    // 不能识别的节点,掠过。
    if (definedIn == Object.class){
    try {
    return this.realClass(fieldName) != null;
    } catch (Exception e){
    return false;
    }
    } else {
    return super.shouldSerializeMember(definedIn, fieldName);
    }
    }
    };
    }
    }
    XMLHelper封装类
    package common;

    import java.io.InputStream;
    import java.lang.Class;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Map.Entry;

    public class XmlHelper {
    public static <T> String ToXml(T object, HashMap<String, Class> map) {
    ETLXstream xstream = getXStream(map);
    for (Entry<String, Class> entry : map.entrySet()) {
    xstream.alias(entry.getKey(), entry.getValue());
    }
    return xstream.toXML(object);
    }

    public static <T> T ToObject(String xml, HashMap<String, Class> map) {
    ETLXstream xstream = getXStream(map);
    T object = (T) xstream.fromXML(xml);
    return object;
    }

    public static <T> T ToObject(InputStream stream, HashMap<String, Class> map) {
    ETLXstream xstream = getXStream(map);
    T object = (T) xstream.fromXML(stream);
    return object;
    }

    private static ETLXstream getXStream(HashMap<String, Class> map) {
    ETLXstream xstream = new ETLXstream();
    for (Entry<String, Class> entry : map.entrySet()) {
    xstream.alias(entry.getKey(), entry.getValue());
    }
    return xstream;
    }
    }
  • 相关阅读:
    使用vimdiff作为svn diff的查看代码工具
    Source Insight :在 { 后敲回车后让代码自动缩进
    关于浏览器内核的一些小知识
    Linux内存点滴 用户进程内存空间
    自定义eclipse代码模板
    sqlplus 小记
    LD_PRELOAD的用法 以及链接库的用法
    如何更方便的使用sooset
    [hadoop源码阅读][0]初衷和各种资源
    hadoop streaming和pipes资料
  • 原文地址:https://www.cnblogs.com/nation/p/8880818.html
Copyright © 2011-2022 走看看