我不太了解@XmlIDREF
和@XmlID
是如何一起工作的。通过使用XmlIDREF
,我仅创建对实际元素的引用。但是,XmlID
的用例是什么。
我想创建对类Publication
的引用。用@XmlIDREF
注释发布列表是否足够?
public class Author {
private String id;
private String name;
private List<Publication> publications = new LinkedList<>();
public Author() {
super();
}
@XmlElement
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@XmlIDREF
public List<Publication> getPublications() {
return publications;
}
答案 0 :(得分:0)
我想创建对类
Publication
的引用。 用@XmlIDREF
注释发布列表是否足够?
不,那只是您需要的一半。
您已经有这个:
使用@XmlIDREF
标记关系的引用端
(从Author
指向Publication
)。
public class Author {
...
@XmlIDREF
@XmlElement(name = "publication")
public List<Publication> getPublications() {
return publications;
}
...
}
您还需要标记所引用的面(Publication
本身)
通过用@XmlID
注释其属性之一,例如:
public class Publication {
...
@XmlID
@XmlElement
public String getId() {
return id;
}
...
}
然后您就可以像下面的示例一样处理XML内容:
<root>
<publication>
<id>p-101</id>
<title>Death on the Nile</title>
</publication>
<publication>
<id>p-102</id>
<title>The murder of Roger Ackroyd</title>
</publication>
...
<author>
<id>a-42</id>
<name>Agatha Christie</name>
<publication>p-101</publication>
<publication>p-102</publication>
</author>
...
</root>
您会看到XML引用(例如<publication>p-101</publication>
)
映射到Java对象引用(在List<Publication> publications
中)。