JAXB包装所有字段

时间:2014-06-25 13:29:21

标签: java marshalling unmarshalling jaxb2

目前我有一个简单的类设置:

@XmlRootElement (name = "MyRoot")
public class MyClass {

  @XmlElement (name = "String1") private String string1;
  @XmlTransient public String getString1() { return this.string1; }
  public void setString1(String string1) { this.string1 = string1; }

  @XmlElement (name = "String2") private String string2;
  @XmlTransient public String getString2() { return this.string2; }
  public void setString2(String string2) { this.string2 = string2; }
}

我希望从JAXB处理时类的输出如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MyRoot>
  <MyWrapper>
    <String1>ABC</String1>
    <String2>XYZ</String2>
  </MyWrapper>
</MyRoot>

我的问题是:

  1. 如果没有创建一个内置@XmlRootElement(name = "MyWrapper"的内部类,有没有办法做到这一点?这是JAXB的一个简单限制吗?
  2. 这是JAXB的限制吗?
  3. 是否可以编写/实现某种类型的自定义编组和解组对象来处理这种类型的场景?

1 个答案:

答案 0 :(得分:0)

这是一个限制,显然String1和String2是MyClass的成员,除非你重新定义他们的父母,否则它不会像那样改变。

建议,使它们成为瞬态,使用方法注释,并返回两者的数组