java - JAXB 解码不适用于包含集合的复杂对象

标签 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 的值; 有人可以帮忙吗? 谢谢 奈恩

最佳答案

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

如果您不想添加 set 方法,那么您可以将以下内容添加到您的类中:

@XmlAccessorType(XmlAccessType.FIELD)

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

关于java - JAXB 解码不适用于包含集合的复杂对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3229712/

相关文章:

java - 无法获得正确的类路径

java - 无法将当前目录添加到类路径

java - 在 JPA 存储库中调用 (Postgres) 函数

jaxb - MOXy如何处理空数组

java - 比较 struts ognl 值与 JSP 中的 scriptlet 值

Java 标准注解

java - 其他语言的 XSD javaType 适配器结果

Java JAXB/MOXy - 序列化为 JSON 时包含子类类型作为值

java - JAXB 编码 NumberFormatException 不是数字 : 2. 44​​4 at com.sun.xml.bind.DatatypeConverterImpl._parseInt(DatatypeConverterImpl.java:132)

JAXB 无法生成 XBRL 的 Java 类