2016-04-04 31 views
0

Aşağıdaki kodu var: marshalling sonraJAXB: Kaldır ekstra gereksiz etiketi

public class TestElement { 

    @XmlElement 
    private Field field; 

    private boolean isEmpty; 
    ... 

} 

@XmlRootElement 
public class MainTest { 

    @XmlElement 
    private TestElement el1 

    @XmlElement 
    private TestElement el2 
    ... 
} 

, böyle bir şey ile bir XML dosyası ile sonuçlanır: Ben ancak kaldırmak için

<MainTest> 
    <TestElement id=el1> 
    <Field>...</Field> 
    </TestElement> 
    <TestElement id=el2> 
    <Field>...</Field> 
    </TestElement>  
</MainTest> 

istiyorum < Tarla> etiketleri dosya

<MainTest> 
    <TestElement id=el1>...</TestElement> 
    <TestElement id=el2>...</TestElement>  
</MainTest> 

bunu yapmanın bir yolu var mı

olarak görünüyor böylece? TestElement sınıfındaki field alanı, XML dosyasında temsil edilmesi gereken tek alandır. (Açık bilgi için.: Ben basit Talep gereksiz etiketleri değerini enkapsüle düşmesi, <Field> ve </Field> arasındaki değerini düşüren istemiyorum)

peşin!

+0

@RobertMoskal: Ben MainTest değişti Ben alanını 'Field' dışlamak için çalışmıyorum. Ben sadece etiketin kendisi gereksiz olduğundan XML etiketini değeri etrafında bırakmaya çalışıyorum. –

cevap

0

Bana uygun bir çözüm buldum. Tüm TestElement nesnesini ek açıklama yapmak yerine, her TestElement nesnesi için MainTest sınıfımda bir (özel) getter oluşturdum.

@XmlRootElement 
public class MainTest { 

    private TestElement el1 

    private TestElement el2 
    ... 

    @XmlElement(name="TestElement") 
    private Field getFieldEl1() { 
    return el1.getField(); 
} 
-2

Kullanım @XmlValue Field alıcı yöntemine