xml 元素可以相互引用吗?

is that possible to have xml elements referencing each other?

假设我想建立一个家谱。所以我有:

<family name="Smith">
    <member name="Tom">
        <children> ... </children>
    </member>
    <member name="John">
        <father> ... </father>
    </member>
</family>

汤姆是约翰的父亲。

所以我的问题是:

  1. 有没有一种方法可以方便的标记这种关系,并且John的元素father在unmarshal后会和Tom是同一个对象?
  2. 我应该如何注释类?
  3. 从广义上讲,在json中表达相同事物的等效方式是什么?

请注意,在我这里的特定示例中,name 不应充当 key/id,因为一个家庭中多人同名是很正常的:

<family name="Bush">
    <member name="George">
        <children> ... </children>
    </member>
    <member name="George">
        <father> ... </father>
    </member>
</family>

想知道有没有办法直接标记元素

对于此用例,您可以使用 @XmlID@XmlIDREF@XmlID 注释将 属性 标记为键(您将需要具有唯一值的 属性,即 name 不是唯一的,因为在您的示例中它看起来像在布什家族中有一父子叫乔治),@XmlIDREF作为外键。每个对象还需要通过嵌套关系进行引用(在您的示例中,这将通过 Family.

上的 members 属性 来完成

了解更多信息

我在我的博客上写了更多关于这个用例的文章: