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 に答える