似乎可以解组两个具有相同名称的不同jaxb对象.
有一个酒吧班……
public abstract Bar {
private @XmlElement String val;
}
..有两个实现(构造函数等省略):
@XmlRootElement(name="bar")
public class BarA extends Bar { }
@XmlRootElement(name="bar")
public class BarB extends Bar {
private @XmlElement(required=true) String type;
}
该列表包含在使用@XmlAnyElement
的类中
@XmlRootElement
public class Bars {
@XmlMixed
@XmlAnyElement(lax = true)
@XmlElementRefs({@XmlElementRef(BarA.class),@XmlElementRef(BarB.class)})
private List
但是我似乎只获取了BarA或BarB的实例,无论哪个是@XmlElementRefs链中的最后一个元素.
测试代码:
String xml = ...
JAXBContext jc = JAXBContext.newInstance(Bars.class);
ByteArrayInputStream in = new ByteArrayInputStream(xml.getBytes());
Bars bars = (Bars) jc.createUnmarshaller().unmarshal(in);
for (Bar bar : bars.getBars()) {
System.out.println(bar.getClass());
}
我认为JAXB @XmlElements,different types but same name?中建议的XmlAdapter不一定是唯一的方法.
最佳答案
原文链接:https://www.f2er.com/java/437993.html