非无状态 JAXB XML 适配器



我有一个非静态数据,我需要在转换时使用。如何将此数据传输到适配器类中?也许我可以在 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

最新更新