JAXB 如何嵌套多个对象?

我一直在尝试搜索如何做到这一点,但我还没有找到我的确切要求的答案:


假设我们有这3个类:


public class Main {

    public ArrayList<MyFirstClass> myFirstClass;

}


class MyFirstClass {

    public int num;

    public MySecondClass mySecondClass;

}


class MySecondClass {

    public String otherStr;

    public MyThirdClass myThirdClass;

}


class MyThirdClass {

    public int otherNum;

}

我希望能够使用解组器读取这些 XML:


<Main>

    <MyFirstClasses>

        <MyFirstClass>

            <num>1</num>

            <MySecondClass>

                <str>Hello</str>

                <MyThirdClass>

                    <otherNum>2</otherNum>

                </MyThirdClass>

            </MySecondClass>

        </MyFirstClass>

    <MyFirstClasses>

</Main>

我基本上能够设置作为对象的变量(我的第二/第三类)。


我知道我可以使用然后和做@XMLRootElement@XmlElementWrapper(name="aName")@XmlElement(name="aName")


<Main>

    <MyFirstClasses>

        <MyFirstClass>

            <num>1</num>

        </MyFirstClass>

    <MyFirstClasses>

</Main>

但是,我怎么能将我的第二类嵌套在MyFirstClass中,这样我就可以设置它的值,因为否则第一类对象将有一个具有空值的MySecondClass。


烙印99
浏览 81回答 1
1回答

慕姐8265434

问题是您的 xml 与你的 POJO 不匹配。您可以使用注释来解决此问题(重命名字段也可以)。试试这个:@XmlRootElement(name = "Main")public class Main {&nbsp; &nbsp; @XmlElementWrapper(name = "MyFirstClasses")&nbsp; &nbsp; @XmlElement(name = "MyFirstClass")&nbsp; &nbsp; private List<MyFirstClass> myFirstClass;}然后是头等舱:@XmlAccessorType(XmlAccessType.FIELD)public class MyFirstClass {&nbsp; &nbsp; private int num;&nbsp; &nbsp; @XmlElement(name = "MySecondClass")&nbsp; &nbsp; private MySecondClass mySecondClass;}和我的第二类:@XmlAccessorType(XmlAccessType.FIELD)public class MySecondClass {&nbsp; &nbsp; private String str;&nbsp; &nbsp; @XmlElement(name = "MyThirdClass")&nbsp; &nbsp; private MyThirdClass myThirdClass;}最后,我的第三类:@XmlAccessorType(XmlAccessType.FIELD)public class MyThirdClass {&nbsp; &nbsp; public int otherNum;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java