hoge66的专栏

-----------------------看到专栏,偷着笑!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

xstream.fromXML 忽略没有的节点

Posted on 2017-08-28 16:20  hehoge  阅读(4898)  评论(0编辑  收藏  举报

xml中存在节点,而model中不存在,就会报错:

com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException: No such field com.creditharmony.adapter.model.crif.CrifBodyAppVar.App_amt

-------------解决方案----------

重写XStream中的方法:

package com.creditharmony.adapter.core.service;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.thoughtworks.xstream.mapper.MapperWrapper;

public class XStreamEx extends XStream {
	 public XStreamEx(DomDriver domDriver) {
		 super();
	}

	@Override
	  protected MapperWrapper wrapMapper(MapperWrapper next) {
	    return new MapperWrapper(next) {
	      @Override
	      public boolean shouldSerializeMember(@SuppressWarnings("rawtypes") Class definedIn,
	              String fieldName) {
	        if (definedIn == Object.class) {
	          return false;
	        }
	        return super.shouldSerializeMember(definedIn, fieldName);
	      }
	    };
	  }

}

 使用:

直接new对象即可.

XStreamEx xstream = new XStreamEx(new DomDriver(Constant.DEFAULT_CHARSET));