4

我必须在 Java 对象中解析 XML,并且 XML 包含一个未包装的对象列表,如下所示:

<main>
    <mainPropA>Main Property A</mainPropA>
    <mainPropB>Main Property B</mainPropB>
    <elements>
        <propA>Property A1</propA>
        <propB>Property B1</propB>
        <propA>Property A2</propA>
        <propB>Property B2</propB>
        ...
    </elements>
</main>

所以在这种情况下,我的 Java 代码应该如下所示:

public class MainClass {
    private String mainPropA;
    private String mainPropB;
    private List<Element> elements;
}

public class Element {
    private String propA;
    private String propB;
}

我不知道如何映射这个。

我尝试了以下映射,并且可以让第一个元素填充到列表中,但不是其他元素。

@XmlRootElement(name = "main")
@XmlAccessorType(XmlAccessType.FIELD)
public class MainClass {
    private String mainPropA;
    private String mainPropB;
    @XmlElement(name = "elements")
    private List<Element> elements;
}

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Element {
    private String propA;
    private String propB;
}

我尝试了各种注释组合,但上面的注释让我最接近看到 null 以外的东西。

有没有办法让它工作?

我无法更改向我发送的 XML,所以它已经过时了。

我正在使用 JAXB,但与它没有任何联系。也使用 Java 7,如果这有什么不同的话。

4

1 回答 1

0

试试这个

    @XmlRootElement(name = "main")
    @XmlAccessorType(XmlAccessType.FIELD)
    public class MainClass {
        @XmlElement(name = "mainPropA")
        private String title;
        @XmlElement(name = "mainPropB")
        private String author;
        private Elements elements;

        @XmlAccessorType(XmlAccessType.FIELD)
        static class Elements {
            List<String> propA;
            List<String> propB;
        }
    }
}
于 2013-09-27T04:09:38.483 回答