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;
    }
    }
  • 相关阅读:
    技术普及帖:你刚才在淘宝上买了一件东西
    centos 安装yum
    eclipse 中java 项目红色感叹号终极解决方案
    centos x8664位版本 想安装qq for linux
    甲骨文放弃对RHEL的ASMLib支持
    amoeba连接mysqlERROR 2006 (HY000): MySQL server has gone away
    让Fedora 15/CentOS 6显示详细启动信息,不显示进度条
    Oracle10g RAC安装手册
    如何控制oracle RAC 进行并行运算
    利用mysql的inet_aton()和inet_ntoa()函数存储IP地址
  • 原文地址:https://www.cnblogs.com/nation/p/8880818.html
Copyright © 2011-2022 走看看