2014-03-25 86 views
2

作爲即時通訊初學者使用XSD和JAXB,我很卡在這一塊,即使擡起頭來在網絡上,沒有什麼相似的:重複標籤與JAXB

我想用我的JAXB程序編寫XSD方便所以代表我的同班同學手風琴:

@XmlRootElement(name = "div") 
@XmlType(propOrder = { "h3", "div" }) 
public class Accordion { 

String id; 

public String getId() { 
    return id; 
} 

@XmlAttribute 
public void setId(String id) { 
    this.id = id; 
} 

String h3; 

public String getH3() { 
    return h3; 
} 

@XmlElement 
public void setH3(String h3) { 
    this.h3 = h3; 
} 

String div; 

public String getDiv() { 
    return div; 
} 

@XmlElement 
public void setDiv(String div) { 
    this.div = div; 
}} 

雖然編組的對象:結果如下:

<div id="title 25"> 
    <h3>hi1</h3> 
    <div>div content</div> 
</div> 

現在的問題是,我想H3和重複內DIV DIV ,像這樣:

<div id="title 25"> 
    <h3>hi1</h3> 
    <div>div content</div> 
    <h3>hi2</h3> 
    <div>div content 2</div> 
    ... 
</div> 

有什麼想法嗎?

回答

1

你可以得到你正在尋找的XML,你只需要改變你的模型,如下所示,並利用@XmlElementRefs/@XmlElementRef

@XmlElementRefs({ 
    @XmlElementRef(name="h3", type=JAXBElement.class), 
    @XmlElementRef(name="div", type=JAXBElement.class) 
}) 
public List<JAXBElement<String>> getH3AndDiv() { 
    return h3AndDiv; 
} 

完整的例子

+0

謝謝回答,我想您的解決方案是限制在一個時間只選擇一個元素,而我想有H3,隨後由div,並重復只要我們想,像h3然後div然後h3然後div等 –

+0

@ ZakariaBouazza - 我不知道你的意思。在這個原因中,'JAXBElement'的實例包含元素名稱和值。然後,您可以根據它們在列表中出現的順序來安排您希望它們顯示的方式。 –

+1

它終於奏效了,我開始進行逆向工程,通過從包含xsd的序列文件創建類,並得到了eh對象工廠,非常感謝! –