JAXB динамическое имя корневого класса XML - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть пользовательский класс в Java.Когда я хочу разархивировать его, я получаю xml с корневым элементом <UserIn>, а когда я хочу упорядочить его, я должен сделать <UserOut>, чтобы быть корневым элементом XML.Если я предоставлю @XmlRootElement("UserIn"), это не динамично, и это всегда UserIn root.Есть ли способ сделать динамический корневой элемент в классе?спасибо.

1 Ответ

0 голосов
/ 10 декабря 2018

Вы можете создать два класса, которые расширяют ваш класс User, а затем использовать определенный дочерний класс на основе, если вы выполняете маршалинг на unmarshalling.

Например, для класса User:

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);
    }
}

и UserOut:

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

    public UserOut() { }

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

Укажите соответствующий класс, где вам нужно, и вы получите его для работы с желаемым вводом или выводом.

...