我正在尝试解码从 jersey JAXB 带注释的类创建的 XML 文档。
JAXBContext jaxbCtx = JAXBContext.newInstance(MyClass.class);
Unmarshaller m = jaxbCtx.createUnmarshaller();
MyClass result = (MyClass) m.unmarshal(in)
MyClass 看起来像:
@XmlRootElement(name = "my-class")
@XmlSeeAlso(SomeOther.class)
public class MyClass {
private Collection<SomeOther> result;
private URI uri;
private String errorMsg;
@XmlElement
public String getError() {
return errorMsg;
}
@XmlElement
public Collection<SomeOther> getResult() {
return // some Set<SomeOther>;
}
@XmlAttribute
public URI getUri() {
return uri;
}
示例 XML 如下:
<my-class uri="some uri">
<error></error>
<result>
<some other information in tags>
</result>
...
<result>
</result>
</my-class>
jaxb unmarshaler 返回的对象包含所有值为 null 的值; 有人可以帮忙吗? 谢谢 奈恩
最佳答案
这是因为你缺少set方法。如果您只提供 get 方法,那么 JAXB 会认为此属性是只写的。
如果您不想添加 set 方法,那么您可以将以下内容添加到您的类中:
@XmlAccessorType(XmlAccessType.FIELD)
然后注释字段而不是属性。
关于java - JAXB 解码不适用于包含集合的复杂对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3229712/