JAXB动态XML根类名

JAXB动态XML根类名,jaxb,marshalling,unmarshalling,xmlroot,Jaxb,Marshalling,Unmarshalling,Xmlroot,我有我的java用户类。当我想要解组它时,我使用根元素获取xml,当我想要封送它时,我应该做作为xml根元素。如果我提供@XmlRootElement(“UserIn”)它不是动态的,并且总是UserIn root。有没有办法在类上执行动态根元素?谢谢。您可以创建两个类来扩展您的用户类,然后根据是否在解组时编组使用特定的子类 例如,对于类用户: public class User { @XmlElement private String value; public U

我有我的java用户类。当我想要解组它时,我使用
根元素获取xml,当我想要封送它时,我应该做
作为xml根元素。如果我提供
@XmlRootElement(“UserIn”)
它不是动态的,并且总是UserIn root。有没有办法在类上执行动态根元素?谢谢。

您可以创建两个类来扩展您的用户类,然后根据是否在解组时编组使用特定的子类

例如,对于类用户:

public class User {

    @XmlElement
    private String value;

    public User() { }

    public User(String value) {
        this.value = value;
    }
}
您可以让UserIn:

@XmlRootElement(name = "UserIn")
@XmlAccessorType(XmlAccessType.FIELD)
public class UserIn extends User {

    public UserIn() { }

    public UserIn(String value) {
        super(value);
    }
}
和用户输出:

@XmlRootElement(name = "UserOut")
@XmlAccessorType(XmlAccessType.FIELD)
public class UserOut extends User {

    public UserOut() { }

    public UserOut(String value) {
        super(value);
    }
}

在您需要的地方提供适当的类,您将可以使用您希望的输入或输出。

谢谢。这也是我的选择,但我希望我可以用一个注释来完成。