如何创建包含容器具有属性的列表的 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/