我正在努力寻找我在使用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;
并且它抱怨说某些东西不能同时具有元素和价值。
是否有任何优雅的解决方案,而不创建另一个类来处理元素列表?