用Jaxb重复标记

时间:2014-03-25 12:24:35

标签: java xml jaxb xsd

作为xsd和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>

现在问题是我希望在div中重复h3和div,类似这样:

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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以获取所需的XML,只需将模型更改为以下内容并利用@XmlElementRefs / @XmlElementRef

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

完整示例