簡體   English   中英

JAXB,如何將XML元素解組為列表而不是對象?

[英]JAXB, How to unmarshal XML element as list instead of object?

我的應用程序與另一個生成XML的應用程序集成,他們給了我XSD和示例XML

我對此有一個疑問:

XSD:

<element name="IubLink">
    <complexType>
        <complexContent>
            <extension base="xn:NrmClassXmlType">
                <sequence>
                    <element name="attributes" minOccurs="0">
                        <complexType>
                            <all>
                                <element name="userLabel" minOccurs="0"/>
                                <element name="iubLinkUtranCell" minOccurs="0"/>
                                <element name="iubLinkNodeBFunction" minOccurs="0"/>
                            </all>
                        </complexType>
                    </element >
                    <choice minOccurs="0" maxOccurs="unbounded">
                        <element ref="xn:VsDataContainer"/>
                    </choice>
                </sequence>
            </extension>
        </complexContent >
    </complexType>
</element >

XML:

<un:IubLink id="Iub_RBS0087">
<un:attributes>
    <un:userLabel>Iub_RBS0087</un:userLabel>
    <un:iubLinkUtranCell>SubNetwork=ONRM_RootMo_R,SubNetwork=RNC04,MeContext=RNC04,ManagedElement=1,RncFunction=1,UtranCell=00871</un:iubLinkUtranCell>
    <un:iubLinkUtranCell>SubNetwork=ONRM_RootMo_R,SubNetwork=RNC04,MeContext=RNC04,ManagedElement=1,RncFunction=1,UtranCell=00872</un:iubLinkUtranCell>
    <un:iubLinkUtranCell>SubNetwork=ONRM_RootMo_R,SubNetwork=RNC04,MeContext=RNC04,ManagedElement=1,RncFunction=1,UtranCell=00873</un:iubLinkUtranCell>
    <un:iubLinkUtranCell>SubNetwork=ONRM_RootMo_R,SubNetwork=RNC04,MeContext=RNC04,ManagedElement=1,RncFunction=1,UtranCell=00875</un:iubLinkUtranCell>
    <un:iubLinkUtranCell>SubNetwork=ONRM_RootMo_R,SubNetwork=RNC04,MeContext=RNC04,ManagedElement=1,RncFunction=1,UtranCell=00876</un:iubLinkUtranCell>
    <un:iubLinkUtranCell>SubNetwork=ONRM_RootMo_R,SubNetwork=RNC04,MeContext=RNC04,ManagedElement=1,RncFunction=1,UtranCell=00877</un:iubLinkUtranCell>
    <un:iubLinkNodeBFunction>SubNetwork=ONRM_RootMo_R,SubNetwork=RNC04,MeContext=RBS0087,ManagedElement=1,NodeBFunction=1</un:iubLinkNodeBFunction>
</un:attributes>
<xn:VsDataContainer id="1">
    <xn:attributes>
        <xn:vsDataType>vsDataIubEdch</xn:vsDataType>
        <xn:vsDataFormatVersion>EricssonSpecificAttributes.12.26</xn:vsDataFormatVersion>
        <es:vsDataIubEdch>
            <es:edchDataFrameDelayThreshold>60</es:edchDataFrameDelayThreshold>
            <es:userLabel>1</es:userLabel>
        </es:vsDataIubEdch>
    </xn:attributes>
</xn:VsDataContainer>

在java中,我想獲取IubLinkUtranCell的列表,但是JAXB生成它的方式如下:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {

})
public static class Attributes {

    protected Object userLabel;
    protected Object iubLinkUtranCell;
    protected Object iubLinkNodeBFunction;

因此,我將所有IubLinkUtranCell作為一個對象! ,我該如何繞過它們?

您必須在yor屬性類中列出“ IubLinkNodeBFunction”:

 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "", propOrder = {

 })
 public static class Attributes {

protected Object userLabel;
@XMlElement(name = "iubLinkUtranCell")
protected List<IubLinkUtranCell> iubLinkUtranCellList;
protected Object iubLinkNodeBFunction;

並且必須創建“ IubLinkUtranCell”類,如果該類中還有其他屬性,則可以將其添加到類中以訪問它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM