如何创建包含容器具有属性的列表的 POJO?

通常在创建列表的 POJO 时,您可以通过以下方式进行操作:

表示以下 XML 结构:

<folder>
    <messages>
        <message>
            <subject>XXXX</subject>
            ...
        </message>
        <message>
            <subject>XXXX</subject>
            ...
        </message>
    </messages>
</folder>

@XmlRootElement(name = "folder")
public class Folder {
    @XmlElement
    private List<Message> messages;
    ...
}

@XmlRootElement(name = "message")
public class Message {
    @XmlElement
    private String subject;
    ...
}

但是当消息标签中有属性时,你如何表示一个 POJO? IE。

<folder>
    <messages total="45" start="3">
        <message>
            <subject>XXXX</subject>
            ...
        </message>
        <message>
            <subject>XXXX</subject>
            ...
        </message>
    </messages>
</folder>

您是否专门为消息创建了一个 POJO,然后使用 @XmlValue 或类似内容的注释映射消息列表?

谢谢你们的帮助。

最佳答案

以下方法可用于任何 JAXB (JSR-222) 实现。

消息

仅使用标准 JAXB (JSR-222) API,您将需要向模型引入 Messages 类。

import java.util.List;
import javax.xml.bind.annotation.*;

public class Messages {

    @XmlElement(name="message")
    private List<Message> messages;

    @XmlAttribute
    private int start;

    @XmlAttribute
    public int getTotal() {
        if(null == messages) {
            return 0;
        } else {
            return messages.size();
        }
    }

}

文件夹

然后您需要修改 Folder 类以引用新的 Messages 类。

import javax.xml.bind.annotation.*;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Folder {

    private Messages messages;
}

消息

import javax.xml.bind.annotation.*;

@XmlAccessorType(XmlAccessType.FIELD)
public class Message {

    private String subject;

}

关于list - 如何创建包含容器具有属性的列表的 POJO?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14372107/

10-12 21:11