JAXB 2.x: Как переопределить аннотацию XmlElement из родительского класса - Миссия невыполнима?

Почему это невозможно? Это кажется таким простым, но ведет себя не так, как ожидалось.

Резюме: ПОЧЕМУ? Это не совсем интуитивно, если мыслить в терминах ООП.

Когда я устанавливаю аннотацию @XmlElement также для класса B ... вот так:

@XmlElement
public DataB getSource() {
    return this.source;
}

... тогда свойство сортируется дважды, потому что оно однажды аннотируется родительским классом, а также дочерним классом. Это также то, чего я не хочу:

Теперь вывод:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
    <source xsi:type="dataB" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <string1>1</string1>
        <string2>2</string2>
        <string3>3</string3>
    </source>
    <source>
        <string1>1</string1>
        <string2>2</string2>
        <string3>3</string3>
    </source>
</root>

В результате я ожидал от JAXB следующего XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
    <source>
        <string1>1</string1>
        <string2>2</string2>
        <string3>3</string3>
    </source>
</root>

Есть какие-нибудь подсказки, как настроить JAXB для получения ожидаемого результата ?? Спасибо за любой отзыв.

8
задан basZero 11 January 2011 в 19:21
поделиться