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;
    }
    }
  • 相关阅读:
    PHP(Zend Studio)入门视频
    PHP开发工具
    ggplot2 pdf import in Adobe Illustrator missing font AdobePiStd
    Python逐行读取文件内容
    R语言合并data.frame
    shell删除最后一列、删除第一行、比较文件
    C语言的fopen函数(文件操作/读写)
    Android 必须知道2018年流行的框架库及开发语言,看这一篇就够了!
    谈谈你对Glide和Picasso他们的对比的优缺点
    Google推荐——Glide使用详解(图片加载框架)
  • 原文地址:https://www.cnblogs.com/nation/p/8880818.html
Copyright © 2011-2022 走看看