为了账号安全,请及时绑定邮箱和手机立即绑定

JAXB 如何嵌套多个对象?

JAXB 如何嵌套多个对象?

烙印99 2022-09-28 10:08:19
我一直在尝试搜索如何做到这一点,但我还没有找到我的确切要求的答案:假设我们有这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。
查看完整描述

1 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

问题是您的 xml 与你的 POJO 不匹配。您可以使用注释来解决此问题(重命名字段也可以)。试试这个:


@XmlRootElement(name = "Main")

public class Main {

    @XmlElementWrapper(name = "MyFirstClasses")

    @XmlElement(name = "MyFirstClass")

    private List<MyFirstClass> myFirstClass;

}

然后是头等舱:


@XmlAccessorType(XmlAccessType.FIELD)

public class MyFirstClass {

    private int num;

    @XmlElement(name = "MySecondClass")

    private MySecondClass mySecondClass;

}

和我的第二类:


@XmlAccessorType(XmlAccessType.FIELD)

public class MySecondClass {

    private String str;


    @XmlElement(name = "MyThirdClass")

    private MyThirdClass myThirdClass;

}

最后,我的第三类:


@XmlAccessorType(XmlAccessType.FIELD)

public class MyThirdClass {

    public int otherNum;

}


查看完整回答
反对 回复 2022-09-28
  • 1 回答
  • 0 关注
  • 80 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号