在xstream反序列化使用过程中发现,如果xml无该属性,则改属性会被自动复制为null。
<text name="fkzhzh" title="付款账户账号" validateRule="required,acctno" />
public abstract class SBase {
@XStreamAsAttribute
String id = "";
@XStreamAsAttribute
String name = "";
@XStreamAsAttribute
String title = "";
@XStreamAsAttribute
String enabled = "true";
@XStreamAsAttribute
String value = "";
@XStreamAsAttribute
String newLine = "false";
@XStreamOmitField
String typeName = "";
@XStreamAlias("text") public class SText extends SBase { @XStreamAsAttribute private String validateRule ; public SText() { setTypeName("text"); } public String getValidateRule() { return validateRule; } public void setValidateRule(String validateRule) { this.validateRule = validateRule; } public String getTypeName() { return typeName; } public void setTypeName(String typeName) { this.typeName = typeName; } }
可以看到xml中无typeName属性,但是在javabean中存在该属性,在反序列化过程中,该属性会被清除为null。
改属性默认值为setTypeName("text");,默认值为"text"。为了保存改默认值,必须在初始化的时候设置:
com.thoughtworks.xstream.XStream.XStream(ReflectionProvider reflectionProvider)
必须继承实现PureJavaReflectionProvider 类。
public class AnnotationJavaReflectionProvider extends PureJavaReflectionProvider
public class AnnotationJavaReflectionProvider extends PureJavaReflectionProvider { /** * 写字段时验证字段可以被访问,且对于String类型需要进行trim */ @Override public void writeField(Object object, String fieldName, Object value, Class definedIn) { Field field = fieldDictionary.field(object.getClass(), fieldName, definedIn); validateFieldAccess(field); try { if (value instanceof String) field.set(object, ((String)value).trim()); else field.set(object, value); } catch (IllegalArgumentException e) { throw new ObjectAccessException("Could not set field " + object.getClass() + "." + field.getName(), e); } catch (IllegalAccessException e) { throw new ObjectAccessException("Could not set field " + object.getClass() + "." + field.getName(), e); } } }
重载后在xstream初始化的时候,传入参数,则实现了保存javabean的默认值。
XStream stream = new XStream(new AnnotationJavaReflectionProvider());
相关推荐
一个小demo展示xml的两种解析方式和四种解析方法,以及使用XStream进行javaBean与xml、json之间的转换
//如果要解决这一问题就需要进行转换前的装配XStream为此提供一个配置类名的方法 alias(“nodeName”,”class”); 其中nodeName 即XML的节点名称 其中class 即要映射到XML节点上的类 如: xStream.alias("PERSON", ...
NULL 博文链接:https://inotgaoshou.iteye.com/blog/1130234
NULL 博文链接:https://kingxss.iteye.com/blog/1037741
xstream-1.3.1.jar javabean与xml之间的转化,实现转化
xml与JavaBean互相转换的好工具---Xstream,能够很方便的实现xml与JavaBean之间的转换,这在系统之间进行信息交互是非常方便的
最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar ...
XStream 反序列化漏洞(CVE-2020-26258 & 26259),修复jar包 xstream-1.4.15.jar Xstream 是 Java 类库,用来将对象序列化成 XML (JSON) 或反序列化为对象。XStream 是一款开源软件,允许在 BSD 许可证的许可下分发...
xstream最新版jar包
xstream中xml与javaBean的互转
赠送jar包:xstream-1.4.11.jar; 赠送原API文档:xstream-1.4.11-javadoc.jar; 赠送源代码:xstream-1.4.11-sources.jar; 赠送Maven依赖信息文件:xstream-1.4.11.pom; 包含翻译后的API文档:xstream-1.4.11-...
NULL 博文链接:https://ahomeeye.iteye.com/blog/1522706
xstream-1.4.19.jar
xstream jar包,java对象转xml以及xml转java对象,操作很简单。
修改XStream源码,解决SAE不支持XStream的问题。
XStream在运行时使用Java反射机制对要进行序列化的对象树的结构进行探索,并不需要对对象作出修改。XStream可以序列化内部字段,包括私private和final字段,并且支持非公开类以及内部类。 在缺省情况下,XStream不...
xstream-1.4.2.jar,官网上也有,由于本人分没了,希望有分的同志给点分。如果你也每份,请上官网下,地址:http://xstream.codehaus.org/download.html
收集了一些Xstream所依赖的java包,另外,Xstream是一种OXMapping 技术,是用来处理XML文件序列化的框架,在将javaBean序列化,或将XML文件反序列化的时候,不需要其它辅助类和映射文件,使得XML序列化不再繁琐。
xstream 1.2 ,xstream 1.2.2.jar xstream 1.2 ,xstream 1.2.2.jar
xstream-1.4.7.jar XML