Java 目录:https://blog.csdn.net/dkbnull/article/details/87932486
使用XStream解析XML,转化为Java Bean对象时,如果XML中出现未在Java Bean中定义的属性,会报错,报错信息如下:
Exception in thread "main" com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException: No such field cn.wbnull.test.main.Customer.phone
---- Debugging information ----
message : No such field cn.wbnull.test.main.Customer.phone
field : phone
class : cn.wbnull.test.main.Customer
required-type : cn.wbnull.test.main.Customer
converter-type : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
path : /xml/phone
line number : 3
version : 1.4.11.1
-------------------------------
转化方法做如下处理即可:
public static <T> T xmlToJavaBean(String xml, Class[] types) {
if (StringUtils.isEmpty(xml)) {
return null;
}
XStream xStream = new XStream() {
@Override
protected MapperWrapper wrapMapper(MapperWrapper next) {
return new MapperWrapper(next) {
@Override
public boolean shouldSerializeMember(Class definedIn, String fieldName) {
if (definedIn == Object.class) {
return false;
}
return super.shouldSerializeMember(definedIn, fieldName);
}
};
}
};
XStream.setupDefaultSecurity(xStream);
xStream.allowTypes(types);
xStream.processAnnotations(types);
return (T) xStream.fromXML(xml);
}