我不太明白 @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;
}
最佳答案
I want to create a reference to the class
Publication
. Is it enough to annotate the publication List with@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
中)。
关于java - 如何使用@XmlIDREF和@XmlID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56375499/