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>
汤姆是约翰的父亲。
所以我的问题是:
- 有没有一种方法可以方便的标记这种关系,并且John的元素
father
在unmarshal后会和Tom是同一个对象?
- 我应该如何注释类?
- 从广义上讲,在
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
属性 来完成
了解更多信息
我在我的博客上写了更多关于这个用例的文章:
假设我想建立一个家谱。所以我有:
<family name="Smith">
<member name="Tom">
<children> ... </children>
</member>
<member name="John">
<father> ... </father>
</member>
</family>
汤姆是约翰的父亲。
所以我的问题是:
- 有没有一种方法可以方便的标记这种关系,并且John的元素
father
在unmarshal后会和Tom是同一个对象? - 我应该如何注释类?
- 从广义上讲,在
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
属性 来完成
了解更多信息
我在我的博客上写了更多关于这个用例的文章: