我有一个非静态数据,我需要在转换时使用。如何将此数据传输到适配器类中?也许我可以在 JAXB RI 中使用 XmlAdapter 而不使用空构造函数(当然也没有注释)?
public class VariableAdapter extends XmlAdapter<String, Variable> {
private Map<String, Variable> varMap;
public VariableAdapter(Map<String, Variable> aVarMap) {
varMap = aVarMap;
}
public Variable unmarshal(String aVarName) {
return varMap.get(aVarName);
}
public String marshal(Variable v) {
return v.getName();
}
}
这是我的类,我需要从/转换为 XML
public class Variable {
private String name;
private Object value;
public Value(String aName, Object aValue) {
name = aName;
value = aValue;
}
public String getName() {return name;}
public Object getValue() {return value;}
public void setValue(Object aValue) {value = aValue;}
}
所有变量对象都在 XML 处理之前初始化,并且必须根据其名称进行序列化。解组后的变量可以获取另一个值(如果其值在序列化/反序列化之间更改)。
缺省情况下,JAXB 将创建XmlAdapter
的新实例。 您可以在 Marshaller
/Unmarshaller
上调用 setAdapter
方法来指定有状态方法。
欲了解更多信息
- http://blog.bdoughan.com/2011/09/mixing-nesting-and-references-with.html