如何在具有相同标记名称的java中解组嵌套子元素? [英] How to unmarshal nested child elements in java with same tag name?

查看:125
本文介绍了如何在具有相同标记名称的java中解组嵌套子元素?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Java中,我可以通过将值添加到我的POJO中来读取XML。但我不知道如何才能对子子节点做同样的事情。我提供了我的POJO示例和XML子类节点。

In Java I am able to read XML by adding the values into my POJO. But I am not sure how would I able to do the same with sub-child nodes. I provided my POJO example and the XML sub class node.

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


推荐答案

你需要输入这样的东西:

You need to put something like this:

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

和IP地址POJO类:

and IPAddresses POJO class:

@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类单个元素。

Where IPAddress is another POJO class that describes the structure of the individual element.

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

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

EDIT To print them do something like this:

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

这篇关于如何在具有相同标记名称的java中解组嵌套子元素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆