在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());
相关推荐
- 配置XStream:可设置命名空间、类型别名、日期格式等,如`xstream.alias("user", User.class);` - 将JavaBean转换为XML:`String xml = xstream.toXML(user);` - 将XML反序列化为JavaBean:`User user = (User)...
这篇博客“xstream 让javabean和xml互相转换”深入探讨了如何利用XStream库实现这一功能。 XStream的核心思想是通过反射机制,将Java对象的字段映射到XML的元素和属性,以及反向操作将XML解析回Java对象。它的优势...
**XStream:JavaBean与XML/JSON之间的转换大师** XStream是一个开源库,它为Java对象提供了简单且直观的XML序列化和反序列化的解决方案。它不仅能够将Java对象转换成XML,反之亦然,还能支持JSON格式的转换。这个...
这篇博客将探讨如何使用XStream库实现JavaBean到XML字符串以及XML字符串回转到JavaBean的过程。 首先,让我们了解XStream的基本概念。XStream由Johannes Brodskiy创建,它是一个基于Java的库,提供了简单且高性能的...
XStream 是一个强大的 Java 库,它允许程序员方便地将 Java 对象序列化为 XML,以及将 XML 反序列化回 Java 对象。这个组件在处理数据交换、持久化或跨进程通信时非常有用。在Java开发中,XStream 提供了一种简洁的...
2. **初始化 XStream 实例:**创建 `XStream` 对象,通常需要对其进行配置,比如设置命名策略、日期格式等。 3. **注册转换器:**如果需要自定义字段映射或处理特殊类型,可以注册转换器。 4. **序列化:**使用 `to...
《XStream:JavaBean与XML之间的桥梁》 在软件开发中,数据的序列化和反序列化是一项重要的任务,尤其是在需要将对象持久化或者在网络间传输时。XStream是一款强大的Java库,它允许开发者轻松地将Java对象转换为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 ...
下面我们将详细介绍JavaBean生成XML的过程以及XStream库的使用方法。 首先,理解JavaBean的概念。JavaBean是一种遵循特定规则的Java类,通常包含公共属性和getter/setter方法,用于封装数据。它们是Java应用程序中...
XStream 反序列化漏洞(CVE-2020-26258 & 26259),修复jar包 xstream-1.4.15.jar Xstream 是 Java 类库,用来将对象序列化成 XML (JSON) 或反序列化为对象。XStream 是一款开源软件,允许在 BSD 许可证的许可下分发...
XStream 提供了高度定制化的选项,如命名策略、类型转换器和域属性映射,以满足不同需求。 **XStream 的工作原理** XStream 使用反射来获取 Java 类的信息,并使用这些信息构建 XML 结构。默认情况下,它会将所有...
xstream最新版jar包
《XStream详解与应用》 XStream是一款强大的Java库,用于将对象序列化为XML,同时也能从XML数据中反序列化回对象。在标题"xstream-1.4.2.jar"中,我们看到的是XStream的一个特定版本——1.4.2。这个版本包含了...
6. **详尽的错误日志**:当序列化或反序列化出现问题时,XStream 提供了详细的错误信息。 7. **多格式支持**:除了XML,XStream 还可以将 Java 对象转换为 JSON 格式。 **XStream 的优势** 与传统的序列化框架相比...
例如,如果你有一个简单的User类,包含name和age属性,你可以这样转换: ```java User user = new User("Alice", 25); XStream xstream = new XStream(); String xml = xstream.toXML(user); ``` 这将会生成...
xstream中xml与javaBean的互转
在处理日期时,XStream默认的转换策略可能无法满足所有需求,例如默认格式可能不符合项目规范,或者需要处理时区问题。这时,我们可以自定义一个DateConverter,用`@XStreamConverter`注解标记,以替换默认的转换器...
通过这种方式,XStream 就能够正确处理 `Params` 节点下的多个同名子节点及其属性,实现 JavaBean 与 XML 之间的无缝转换。 在实际应用中,我们可以通过 `@XStreamAlias` 注解来指定 XML 节点的名称,以及 `@...
- **自定义对象**: 只需定义好 Java 类,XStream 就能自动处理其属性和嵌套对象。 ### 4. **映射 XML 和 Java 类** - **字段映射(Field Aliases)**: 使用 `aliasField()` 方法可以为类的字段设置别名。 - **类...