我正在尝试使用 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 类和输入的 Message 属性。我将在 Adapter 类上保留所有实例化消息的静态集合。当适配器尝试从输入的消息属性中解码消息时,将收集并搜索从正确的 xml 元素“消息”实例化的消息。接近工作,但我无法让适配器为输入类触发。
有什么想法吗?
最佳答案
这种类型的关系通过 @XmlID
(在唯一标识该对象的字段/属性上)和 XmlIDREF
(在对该对象的引用上)进行映射。请注意,所引用的对象还必须通过您所称的层次结构关系由另一个对象引用。
关于java - 如何解码与 Java 的 JAXB 库的非层次关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18676105/