处理JAXB集合

see*_*ead 9 java jaxb

我试图使用JAXB解组以下XML:

<Works>
    <Work>
        <Composers>
            <Composer>
                <Name>A name</Name>
            </Composer>
            <Composer>
                <Name>A name 2</Name>
            </Composer>
        </Composers>
    </Work>
</Works>
Run Code Online (Sandbox Code Playgroud)

我使用XJC生成了所有类.如果我想访问Composers集合,我必须这样做:

 List<Composer> composers = work.getComposers().getComposer();
Run Code Online (Sandbox Code Playgroud)

我有什么方法可以做以下事情吗?

 List<Composer> composers = work.getComposers();
Run Code Online (Sandbox Code Playgroud)

我很欣赏需要一个Composers对象,因为它是从XML派生的,但是在使用Java进行处理时,拥有一个存储集合的中间POJO似乎有点多余.

我的XSD是:

<xsd:complexType name="Works">
    <xsd:sequence>
        <xsd:element name="Work" type="Work" maxOccurs="unbounded" minOccurs="0"></xsd:element>
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="Work">
    <xsd:sequence>
        <xsd:element name="Composers" type="Composers"></xsd:element>
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="Composers">
    <xsd:sequence>
        <xsd:element name="Composer" type="Composer" maxOccurs="unbounded" minOccurs="0"></xsd:element>
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="Composer">
    <xsd:sequence>
        <xsd:element name="Name" type="xsd:string"></xsd:element>
    </xsd:sequence>
</xsd:complexType>
Run Code Online (Sandbox Code Playgroud)

Wil*_*del 6

@XmlElementWrapper插件不正是你想要的.