JAXB поместить атрибут в элемент

 
 
 
Сообщения:7
Всем привет.

Начал изучать JAXB и все примеры которые находил одинаковые у всех одна и та же схема.
<Animal name="house">
    <cat>
        <weight>6</weight>
        <age>5</age>
        <name>Tyzik</name>
    </cat>
    <cat>
        <weight>3</weight>
        <age>4</age>
        <name>Tyzik</name>
    </cat>
</Animal>


Но не смог найти примеры в которых реализована схема где в элементе находится дополнительный атрибут например:


<Animal name="house">
<cat>
<weight>6</weight>
<age>5</age>
<name pre_name = "Mr">Tyzik</name>
</cat>
<cat>
<weight>3</weight>
<age>4</age>
<name pre_name="Mrs">Tyzik</name>
</cat>
</Animal>

В приведенном примере выделил красным цветом нужный атрибут. Подскажите кто знает как это реализовать.
Изменен:26 мая 2020 13:10
 
 
Сообщения:256
Необходимо использовать аннотацию @XmlAttribute
 
 
Сообщения:7
Каким образом??

Если сделать вот так:

public class Cat {
    public String name;
    public int age;
    public int weight;

    @XmlAttribute
    public String pre_name;

    public Cat(){}
}


Результате будет такой(выделил красным цветом):

<cat pre_name="Mr">
<age>5</age>
<weight>4</weight>
<name>Tyzik</name>
</cat>

А мне нужно получить вот такой результат:

<cat>
<weight>4</weight>
<age>5</age>
<name pre_name="Mr">Tyzik</name>
</cat>
Изменен:26 мая 2020 20:15
 
 
Сообщения:256
Поле уж в Java коде лучше сделать public String preName. Не принято в Java поля через знак подчеркивания задавать. А чтобы в xml выводилось pre_name, надо в @XmlAttribute через параметр name задать название
    @XmlAttribute(name = "pre_name")
    public String preName;
 
 
Сообщения:886
Baly:
Каким образом??

Результате будет такой(выделил красным цветом):

<cat pre_name="Mr">
<age>5</age>
<weight>4</weight>
<name>Tyzik</name>
</cat>

А мне нужно получить вот такой результат:

<cat>
<weight>4</weight>
<age>5</age>
<name pre_name="Mr">Tyzik</name>
</cat>

<name ...> Этот тег должен быть вложенным классом в Cat. Уже в классе Name как писали использовать XmlAttribute
 
 
Сообщения:7
axwer:
Поле уж в Java коде лучше сделать public String preName. Не принято в Java поля через знак подчеркивания задавать. А чтобы в xml выводилось pre_name, надо в @XmlAttribute через параметр name задать название
    @XmlAttribute(name = "pre_name")
    public String preName;


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


gidravlic:
Baly:
Каким образом??

Результате будет такой(выделил красным цветом):

<cat pre_name="Mr">
<age>5</age>
<weight>4</weight>
<name>Tyzik</name>
</cat>

А мне нужно получить вот такой результат:

<cat>
<weight>4</weight>
<age>5</age>
<name pre_name="Mr">Tyzik</name>
</cat>

<name ...> Этот тег должен быть вложенным классом в Cat. Уже в классе Name как писали использовать XmlAttribute


так я и думал, что без создания дополнительного класса тут не обойтись, жаль что не придумали более легкого способа с помощью какой-нибудь аннотации.

Спасибо всем за ответы.
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет