gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:47:55 26 4
gpt4 key购买 nike

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

<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/

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