混合XmlValue和XmlElement编组(生成XML)

时间:2017-11-16 19:52:45

标签: java xml annotations jaxb

我正在努力寻找我在使用JaxB生成xml时遇到的这个问题。我找到了一些解组的解决方案,但试图以相反的方式应用这些解决方案对我来说并不是那么好。

我有一种情况,我有一个根元素可能有一个值或更多的元素(取决于一些逻辑)。

所以最终可能会这样:

<custom-attribute>
    <value>Some Value</value>
    <value>Some Other Value</value>
</custom-attribute>

<custom-attribute>Some Value</custom-attribute>

目前我的代码看起来像这样:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@NoArgsConstructor
@AllArgsConstructor
public class CustomAttribute {

    @XmlAttribute(name = "attribute-id")
    private String attribute_id;

    @XmlValue
    private String value;

    @XmlElement(name = "value")
    private List<ValueElement> valueList;
}

ValueElement只是一个带有@XmlValue字符串的类。我得到了投诉

unable to marshal type "java.lang.String" as an element because it is missing an @XmlRootElement annotation

如果我尝试在String值上使用@XmlMixed;

并且它抱怨说某些东西不能同时具有元素和价值。

是否有任何优雅的解决方案,而不创建另一个类来处理元素列表?

0 个答案:

没有答案