我正在尝试解组由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; 有人可以帮忙吗? 谢谢 Nayn
答案 0 :(得分:4)
这是因为你缺少set方法。如果只提供get方法,那么JAXB认为此属性只能写入。
如果您不想添加set方法,则可以在课程中添加以下内容:
@XmlAccessorType(XmlAccessType.FIELD)
然后注释字段而不是属性。