gpt4 book ai didi

java - 如何使用相同的标签名称解码 java 中的嵌套子元素?

转载 作者:数据小太阳 更新时间:2023-10-29 02:04:39 24 4
gpt4 key购买 nike

在 Java 中,我可以通过将值添加到我的 POJO 中来读取 XML。但是我不确定如何对子节点执行相同的操作。我提供了我的 POJO 示例和 XML 子类节点。

XML:

<results>
<rootNode>
<node>1336</node>
<state>CL</state>
<time>0</time>
<ip_addresses>
<ip_address type="DOC">06:56:43.0</ip_address>
<ip_address type="PE">06:56:43.0</ip_address>
</ip_addresses>
<lease_date>2017-01-25</lease_date>
</rootNode>
</results>

POJO:

@XmlRootElement(name = "rootNode")
@XmlAccessorType (XmlAccessType.FIELD)
public class readingXml
{
private int id;

@XmlElement(name = "node")
private String node;
@XmlElement(name = "state")
private String state;

// How to do the same with sub child-nodes
@XmlElement(name = "ip_addresses")
private String ip_addresses;
// What to do here?

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

// Getters and setters for all above

最佳答案

你需要这样写:

@XmlElement(name = "ip_addresses")
private IPAddresses ipAddresses;

和 IPAddresses POJO 类:

@XmlRootElement(name = "ip_addresses")
@XmlAccessorType(XmlAccessType.FIELD)
public class IPAddresses implements Serializable {
private final static long serialVersionUID = 1L;

@XmlElement(name = "ip_address")
private List<IPAddress> ipAddresses;

public List<IPAddress> getIpAddresses() {
return ipAddresses;
}
public void setIpAddresses(List<IPAddress> ipAddresses) {
this.ipAddresses = ipAddresses;
}
}

其中 IPAddress 是另一个描述单个元素结构的 POJO 类。

@XmlRootElement(name = "ip_address")
@XmlAccessorType(XmlAccessType.FIELD)
public class IPAddress implements Serializable {
private final static long serialVersionUID = 1L;
@XmlValue
protected String content;
@XmlAttribute(name = "type")
protected String type;

public void setContent(String content) {
this.content = content;
}
public String getContent() {
return content;
}

public void setType(String content) {
this.type = type;
}
public String getType() {
return type;
}
}

编辑要打印它们,请执行以下操作:

for (IPAddress ipAddress in custinfo.getIpAddresses().getIpAddresses()) {
System.out.println("value: " + ipAddress.getContent());
System.out.println("type: " + ipAddress.getType());
}

关于java - 如何使用相同的标签名称解码 java 中的嵌套子元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41875849/

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