我正在尝试使用Java的JAXB库解组以下XML。
<message name="GetAllRoutesSoapIn">
<part name="parameters" element="GetAllRoutes"/>
</message>
...
<operation name="GetAllRoutes">
<input message="GetAllRoutesSoapIn"/>
</operation>
分层次解组此文件很容易:消息包含许多部分,操作具有输入。但是我在输入和消息之间建立关系时遇到了麻烦。
我希望解组的Input
类有一个Message
类型的字段,而不是String
类型的字段。
输入类
@XmlType
public class Input extends AbstractElement {
// @XmlAttribute
// private String message;
// Not sure how to implement this. XMLAdapter?
private Message message;
protected Input () {}
...
我最初的想法是创建一个自定义的Message XMLAdapter,并使用@XmlJavaTypeAdapter(MessageAdapter.class)注释Message类和Input的Message属性。我将在Adapter类上保留所有实例化消息的静态集合。将收集从正确的xml元素“message”实例化的Messages,并在适配器尝试从输入的message属性解组Message时进行搜索。接近工作但我无法为输入类启动适配器。
有什么想法吗?
答案 0 :(得分:1)
这种类型的关系映射为@XmlID
(在唯一标识对象的字段/属性上)和XmlIDREF
(在对该对象的引用上)。请注意,引用的对象也必须引用通过你所谓的等级关系的另一个对象。