JAXB解组不适用于包含集合的复杂对象

时间:2010-07-12 15:23:38

标签: java jaxb

我正在尝试解组由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

1 个答案:

答案 0 :(得分:4)

这是因为你缺少set方法。如果只提供get方法,那么JAXB认为此属性只能写入。

如果您不想添加set方法,则可以在课程中添加以下内容:

@XmlAccessorType(XmlAccessType.FIELD)

然后注释字段而不是属性。