powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JAXB Как управлять маршаллингом?
3 сообщений из 3, страница 1 из 1
JAXB Как управлять маршаллингом?
    #39485483
leguo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть к примеру такой класс:
Код: 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
JAXB Как управлять маршаллингом?
    #39485504
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего не понял. У вас abonent в propOrder третим. А вы хотите первым.
...
Рейтинг: 0 / 0
JAXB Как управлять маршаллингом?
    #39485808
leguo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый Blazkowicz,
Благодарю.

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


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