在我的代码库中,我有B extdnds A
,但我想做到:B uses A
. 这是我的尝试:
@XmlAccessorType(XmlAccessType.NONE)
public class A {
@XmlElement(name ="aString")
private String aString;
B类包含A(组成):
@XmlAccessorType(XmlAccessType.NONE)
public class B {
@XmlElement
private A a = new A(); // has A
@XmlElement
private String bString;
有包含 B 列表的 Root
@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class ABs {
@XmlElement(name = "b-list")
private final List<B> bList = Constraints.constrainedList(new ArrayList<B>(), Constraints.notNull());
public void add(B...bb) {
for(B b : bb) {
bList.add(b);
}
}
}
我的测试,将 Bs 编组到 Systetem.out
ABs abs = new ABs();
abs.add( new B("bStringValue", "aStringValue"));
JAXBContext context = JAXBContext.newInstance(ABs.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.marshal(abs, System.out);
结果:
<aBs>
<b-list>
<a>
<aString>aStringValue</aString>
</a>
<bString>bStringValue</bString>
</b-list>
</aBs>
但我想要这样的结果:就像我使用继承一样。就像B extends A
:
<aBs>
<b-list>
<aString>aStringValue</aString>
<bString>bStringValue</bString>
</b-list>
</aBs>
我怎样才能做到这一点?
编辑:
问题实际上是关于:在 B 类中使用 A 类时如何省略/忽略标签<a>
。即不编组到<a>
内部的所有字段/标签<a>
喜欢:
@XmlElement(name = "") // empty
private A a = new A();
但这不起作用