Как отобразить XML-элементы и атрибуты с помощью аннотаций JAXB? - PullRequest
2 голосов
/ 02 мая 2011

Как можно сопоставить поля в аннотациях JAXB с элементами и атрибутами?У меня есть небольшая проблема, пытаясь адаптировать мою модель в JAXB.Вот моя текущая модель:

Info.java :

package com.rest.model;

public class Info {

    private String a;

    private String b;

    private String c;

    private String d;

    public Info() {

    }

    /* ... insert JavaBean getters/setters here */
}

InfoList.java :

package com.rest.model;

public class InfoList {

    private List<Info> infos;

    public InfoList() {

    }

    /* ... insert JavaBean getters/setters here */
}

Чтоэто сериализуется в следующем:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<infos>
    <info>
        <a>HELLO</a>
        <b>WORLD</b>
        <c>OLLEH</c>
        <d>DLROW</d>
    </info>
</streams>

Как я могу контролировать способ сериализации?Я пытался использовать аннотации, но мне удалось вызвать только IllegalAnnotationException с.Как бы я по сути взял эту модель, поскольку она автоматически отображается и выражается в аннотациях?В качестве альтернативы, как я могу изменить поля в классе Info для сопоставления вместо атрибутов XML?

1 Ответ

2 голосов
/ 02 мая 2011

По умолчанию JAXB будет искать аннотации для открытых средств доступа. Если вы аннотируете поля, вы увидите исключение, которое вы получаете. Если вы хотите аннотировать поля Добавить следующее:

@XmlAccessorType(XmlAccessType.FIELD)
public class Foo {

    @XmlAttribute
    private String a;

}

Например, см .:

...