【发布时间】:2011-06-05 02:30:09
【问题描述】:
假设我有一个像这样的简单 Java 类:
public class User {
String firstName;
String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
现在,假设我要解析以下 XML:
<user>
<firstName>Homer</firstName>
<lastName>Simpson</lastName>
</user>
我可以像这样在 XStream 中毫无问题地做到这一点:
User homer = (User) xstream.fromXML(xml);
好的,到目前为止一切都很好,但这是我的问题。
假设我有以下要解析的 XML:
<user>
<fullName>Homer Simpson</fullName>
</user>
如何使用 XStream 将此 XML 转换为 相同 用户对象?
我想要一种实现某种回调的方法,这样当 XStream 解析 fullName 字段时,我可以将字符串一分为二,并在用户对象上手动设置名字和姓氏字段。这可能吗?
请注意,我不是在问如何将字符串一分为二(这是最简单的部分),我想知道如何拦截 XML 解析,因此 XStream 不会尝试反射性地设置 User 对象上的 fullName 字段(显然不存在)。
我查看了 XStream 提供的转换器,但不知道如何将其用于此目的。
任何帮助将不胜感激。
【问题讨论】: