如何在 java class 中获得相同的@XmlElement 名称
how to get same @XmlElement name in java class
尝试编组其中一条消息,我需要不同数据类型的相同名称,以便标签名称保持不变。以下是代码,但它只设置了一种数据类型,而不是所有三种。
@XmlAccessorType(XmlAccessType.FIELD)
public class Event {
@XmlElement(name="DataRows")
private XData xData;
@XmlElement(name="DataRows")
private YData yData;
@XmlElement(name="DataRows")
private ZData zData;
}
您需要一个包含 @XmlElement(name="DataRows")
的数组或列表
你可以这样做:
@XmlAccessorType(XmlAccessType.FIELD)
public static class Event {
@XmlTransient
private XData xData;
@XmlTransient
private YData yData;
@XmlTransient
private ZData zData;
@XmlElement(name="DataRows")
public List<Object> getDataRows() {
return Stream.of(xData, yData, zData).collect(Collectors.toList());
}
}
@XmlAccessorType(XmlAccessType.FIELD)
public class Event {
@XmlElements(value = {@XmlElement(name="DataRows", type=XData.class),
@XmlElement(name="DataRows", type=YData.class),
@XmlElement(name ="DataRows",type=ZData.class)
})
private Object typeOfData;
}
尝试编组其中一条消息,我需要不同数据类型的相同名称,以便标签名称保持不变。以下是代码,但它只设置了一种数据类型,而不是所有三种。
@XmlAccessorType(XmlAccessType.FIELD)
public class Event {
@XmlElement(name="DataRows")
private XData xData;
@XmlElement(name="DataRows")
private YData yData;
@XmlElement(name="DataRows")
private ZData zData;
}
您需要一个包含 @XmlElement(name="DataRows")
你可以这样做:
@XmlAccessorType(XmlAccessType.FIELD)
public static class Event {
@XmlTransient
private XData xData;
@XmlTransient
private YData yData;
@XmlTransient
private ZData zData;
@XmlElement(name="DataRows")
public List<Object> getDataRows() {
return Stream.of(xData, yData, zData).collect(Collectors.toList());
}
}
@XmlAccessorType(XmlAccessType.FIELD)
public class Event {
@XmlElements(value = {@XmlElement(name="DataRows", type=XData.class),
@XmlElement(name="DataRows", type=YData.class),
@XmlElement(name ="DataRows",type=ZData.class)
})
private Object typeOfData;
}