У меня есть два класса (слой, изображение), у этого класса есть ID, каждый ID - уникальный ID (ID не должен повторяться), когда я использовал JAXB для синтаксического анализа моего класса в XML, был отмечен идентификатор повторяется. Как я не могу вставить один и тот же идентификатор.
Класс уровня:
@XmlRootElement(name="Project")
public class Layer {
private String id;
private Image[] images;
@XmlID
@XmlAttribute(name="id")
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@XmlElement(name="images")
public Image[] getImages() {
return images;
}
public void setImages(Image[] images) {
this.images = images;
}
}
класс изображения:
public class Image {
private String id;
@XmlID
@XmlAttribute(name="id")
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
Результат XML:
<project>
<layer id="1">//I don't want repeated ID layer
<images id="1">// I don't want repeated ID in in same layer tag
</images>
<images id="1">
</images>
</layer>
<layer id="1">//here not 2 not 1, if code understand this is ID that mean give me error or massage
<images id="1">
</images>
<images id="1">
</images>
</layer>
</project>
В JAXB аннотация @XmlID
не используется для обеспечения уникальности. Это просто означает, что отображаемое поле/свойство соответствует типу xs:ID
.
Заметка:
Если вы создали XML-схему из своей модели и установили ее на Unmarshaller
для включения проверки (см. Http://blog.bdoughan.com/2010/12/jaxb-and-marshalunmarshal-schema.html), то это даст ошибки проверки, если в документе с таким же значением было несколько узлов типа xs:ID
.