Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JAXB Как управлять маршаллингом? / 3 сообщений из 3, страница 1 из 1
10.07.2017, 09:09
    #39485483
leguo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JAXB Как управлять маршаллингом?
Есть к примеру такой класс:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
@XmlRootElement(name="AnsCalcForm")
@XmlType(propOrder = {
        "finesum",
        "commissionsum",
        "abonent",
        "parameter"
})
public class AnsCalcForm {
    
    protected int commissionsum;
    protected int finesum;
    protected AbonentType abonent;

    public  AnsCalcForm() {
    }

    public int getFinesum() {
        return finesum;
    }
    @XmlElement
    public void setFinesum(int finesum) {
        this.finesum = finesum;
    }

    public int getCommissionsum() {
        return commissionsum;
    }
    @XmlElement
    public void setCommissionsum(int commissionsum) {
        this.commissionsum = commissionsum;
    }   
    
    @XmlElement(name = "Abonent")
    public AbonentType getAbonent() {
        return abonent;
    }
    public void setAbonent(AbonentType abonent) {
        this.abonent = abonent;
    }    
}



У него есть потомок:
Код: java
1.
2.
3.
4.
5.
6.
@XmlRootElement(name="ReqCalcForm")
public class ReqCalcForm extends AnsCalcForm { 
    
   public ReqCalcForm() {        
   }   
}



Маршалится это всё с помощью JAXB в XML такого вида:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<ReqCalcForm>
<ordersum>0</ordersum>
<finesum>0</finesum>
<commissionsum>0</commissionsum>
<Abonent>
<srvnum>0</srvnum>
<account>0</account>
</Abonent>
</ReqCalcForm>

,

А это неправильно. XML валидацию не проходит.
Неверный порядок элементов.
Должно быть
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<ReqCalcForm>
<Abonent>
<srvnum>0</srvnum>
<account>0</account>
</Abonent>
<ordersum>0</ordersum>
<finesum>0</finesum>
<commissionsum>0</commissionsum>
</ReqCalcForm>



Можно ли как-то управлять маршаллингом свойств.
Кучу всего в интернете прочитал,кроме алфавитного не нашел.
Может быть есть какие-то альтернативы?

--------------------------------------------------
У меня кончились GUID'ы. Никто не поделится?
...
Рейтинг: 0 / 0
10.07.2017, 09:54
    #39485504
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JAXB Как управлять маршаллингом?
Ничего не понял. У вас abonent в propOrder третим. А вы хотите первым.
...
Рейтинг: 0 / 0
10.07.2017, 15:01
    #39485808
leguo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JAXB Как управлять маршаллингом?
Уважаемый Blazkowicz,
Благодарю.

Это я ошибся. Пытался упростить пример и накосячил.
Вроде разобрался. У базового класса поставил @XmlTransient.
А у потомков в propOrder поля в том порядке, в котором мне нужно.
Вопрос снимается.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JAXB Как управлять маршаллингом? / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]