1
这是我的课:Bar
如何在JAXB中编组解包的集合?
@XmlRootElement(name = "foo")
@XmlAccessorType(XmlAccessType.NONE)
public class Foo {
@XmlElement
public Collection getElements() {
List elements = new ArrayList();
elements.add(new Bar);
elements.add(new Bar);
return elements;
}
}
类也很简单:
@XmlType(name = "bar")
@XmlAccessorType(XmlAccessType.NONE)
public static final class Bar {
@XmlElement
public String getMessage() {
return "hello, world!";
}
}
这就是我的Foo
编组后得到:
<foo>
<elements xsi:type="foo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<message>hello, world!</message>
</elements>
<elements xsi:type="foo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<message>hello, world!</message>
</elements>
</foo>
虽然我期待得到:
<foo>
<bar>
<message>hello, world!</message>
</bar>
<bar>
<message>hello, world!</message>
</bar>
</foo>
我该怎么修复?
但我想从他们的'@ XmlType'注解使用他们的名字。我不想在'Foo'类中复制这个声明...可能吗?而且,在现实生活中,我不知道他们的名字是什么。 – yegor256
@ yegor256 - 您可以利用“@ XmlRootElement”注释的值,而不是“@ XmlType”注释的值。如果集合的值涉及继承层次结构,则可以使用'@ XmlElementRef'注释:http://blog.bdoughan.com/2010/11/jaxb-and-inheritance-using-substitution.html。如果它们不相关,则可以使用'@XmlAnyElement(lax = true)'注释:http://blog.bdoughan.com/2010/08/using-xmlanyelement-to-build-generic.html –
'@ XmlAnyElement'正是我所期待的,非常感谢博客链接! – yegor256