java - 如何使用 JAXB 解析 Java 中的嵌套 XML 对象列表?

标签 java xml jaxb

我已经解析了如下对象,没有任何问题:

<response>
    <myObject>
        <id>1</id>
        <name>abc</name>
    </myObject>

    <myObject>
        <id>2</id>
        <name>def</name>
    </myObject>
</response>

像这样的类:

@XmlRootElement(name="myObject")
public class MyObject{

    @XmlElement(name="id")
    long id;

    @XmlElement(name="name")
    String name;

    /* getters and setters ... etc.. */

}

这工作正常,通过我的 API 调用,我按预期获得了 MyObjects 列表。 但我该如何处理这种类型的响应:

<response>
    <objectWrapper>
        <myObject>
            <id>1</id>
            <name>abc</name>
        </myObject>

        <myObject>
            <id>2</id>
            <name>def</name>
        </myObject>
    </objectWrapper>
</response>

起初我认为构建一个 ObjectWrapper 类就可以解决问题,如下所示:

@XmlRootElement(name="objectWrapper")
public class ObjectWrapper{

    @XmlElement(name="myObject")
    List<MyObject> myObject;
    /* getters and setters ... etc.. */

}

然后我也考虑过使用@XmlElementWrapper,但是如何呢? 我可以从类中删除 @XmlRootElement 并在列表中添加 @XmlElementWrapper 吗?

编辑:不,我无法删除@XmlRootElement

最佳答案

您的类是否名为 ObjectWrapper 并不重要。 您需要在 @XmlElementWrapper 中指定正确的包装器名称,即 objectWrapper

您的ObjectWrapper类应如下所示:

@XmlRootElement( name = "response" )
@XmlAccessorType( XmlAccessType.FIELD )
public class ObjectWrapper
{
    @XmlElementWrapper( name = "objectWrapper" )
    @XmlElement( name = "myObject" )
    private List<MyObject> myObjects;


    public void setMyObjects( List<MyObject> objects )
    {
        this.myObjects  = objects;
    }

    public List<MyObject> getMyObjects()
    {
        return myObjects;

    }
}

关于java - 如何使用 JAXB 解析 Java 中的嵌套 XML 对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44330070/

相关文章:

java - 使用 JAXB 在 Jersey RESTful API 的 JSON 输出中包含空元素

java - 如何解决 java.lang.NoClassDefFoundError : javax/xml/bind/JAXBException

java - 如何使用 restTemplate Spring-mvc 发送 Multipart 表单数据

java - Element::textContent 和 NodeList::item::getNodeValue 之间的区别

java - 对数组字符串进行排序 java 即输入 ="aab cde abc aaa"输出 ="aaa aab abc cde"

java - Eclipse 中的 Tomcat - HTTP 状态 404 请求的资源不可用

android RadioButton 图片和文字

java - 将 twitter4J 状态保存到 MongoDB 会给出 "twitter4j.Status is an interface, and JAXB can' t 句柄接口(interface)”

java - 转换异常 android.widget.TextView

java - Micronaut Dockerfile破坏了软件包的构建