gpt4 book ai didi

java - JAXB Unmarshal 未包装的对象列表

转载 作者:行者123 更新时间:2023-11-29 08:58:19 25 4
gpt4 key购买 nike

我必须在 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,但不以任何方式绑定(bind)到它。如果有任何不同,也使用 Java 7。

最佳答案

试试这个

    @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;
}
}
}

关于java - JAXB Unmarshal 未包装的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19041364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com