Несколько элементов одного типа, но с другим именем?

Есть ли способ присвоить разные имена одному и тому же типу при использовании @XmlElements? Я начал с простого использования @XmlElement. Немного почитал и нашел @XmlElementWrapper и @XmlElements, но до сих пор не смог получить желаемый результат. Я понимаю, что мог бы просто сделать разные типы данных для 2, но было бы неплохо, если бы я мог просто сделать это с аннотациями.

Текущая версия:

@XmlRootElement(name = "Root")
public class XmlTest {

    @XmlElementWrapper(name="ContactInformation")
    @XmlElements({
            @XmlElement(name="Name"),
            @XmlElement(name="LogicalOwner")
    })
    public List<String> contactInformation;
    ...
        contactInformation = new ArrayList<>();
        contactInformation.add("should be inside name");
        contactInformation.add("should be insde of owner");
    ...

Текущий вывод:

<Root>
    <ContactInformation>
        <LogicalOwner>should be inside name</LogicalOwner>
        <LogicalOwner>should be insde of owner</LogicalOwner>
    </ContactInformation>
</Root>

Желаемый результат:

<Root>
    <ContactInformation>
        <Name>should be inside name</Name>
        <LogicalOwner>should be insde of owner</LogicalOwner>
    </ContactInformation>
</Root>

person gonzo    schedule 10.06.2016    source источник


Ответы (1)


Вы можете попробовать создать класс, в котором хранятся поля, а затем сериализовать этот класс.

@XmlRootElemnt(name="root")
Class ContactInformation{

    private String name;

    @XmlElement(name="Name")
    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Я привык использовать Gson.toJson(), поэтому я не сильно помогу с сериализацией в XML; надеюсь, это указывает вам в правильном направлении.

person ZachCleaver    schedule 10.06.2016
comment
Да... Я надеялся избежать создания еще одного класса. Но это сработает. Это должен был быть мой план Б, если я не смогу придумать способ сделать все это в одном классе. - person gonzo; 10.06.2016