Как определение ID в JAXB в Java?

1

У меня есть два класса (слой, изображение), у этого класса есть 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>
  • 0
    Если вы сериализуете XML, тогда вы генерируете идентификаторы, и ваш код отвечает за правильную установку идентификаторов, jaxb не сделает это за вас.
  • 0
    это означает, что каждый раз, когда я создаю метод для получения последнего идентификатора из xml после этого идентификатора вставки, и как можно поставить все роли одинаковыми maxOccurs = "1" или ..
Показать ещё 2 комментария
Теги:
jaxb

1 ответ

0
Лучший ответ

В JAXB аннотация @XmlID не используется для обеспечения уникальности. Это просто означает, что отображаемое поле/свойство соответствует типу xs:ID.

Заметка:

Если вы создали XML-схему из своей модели и установили ее на Unmarshaller для включения проверки (см. Http://blog.bdoughan.com/2010/12/jaxb-and-marshalunmarshal-schema.html), то это даст ошибки проверки, если в документе с таким же значением было несколько узлов типа xs:ID.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню