Допустим, что это эти объекты.
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Root{
private Collection<Item> items;
@XmlElement(name="item")
@XmlElementWrapper(name="items")
public void setItems(Collection<Item> items){
this.items = items
}
}
а также
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Item{
private Collection<Item> items;
@XmlElement(name="item")
public void setItems(Collection<Item> items){
this.items = items
}
}
Я могу unmarshall xml файлы со структурой, подобной этому примеру.
<root>
<items>
<item>
<item>
<item></item>
<item></item>
</item>
<item></item>
<item></item>
</item>
<item></item>
<item></item>
<items>
</root>
Реальный вопрос. Когда unmarshaller вызывает Root.setItems(items)
гарантировано ли, что каждое свойство каждого Item
из этой Collection
полностью инициализировано? Можно ли изменить поведение, как unmarshaller создает граф объектов (от TOP до BOTTOM или от BOTTOM до TOP)?
Заранее спасибо.
Реальный вопрос. Когда unmarshaller вызывает Root.setItems(items), гарантировано ли, что каждое свойство каждого элемента из этой коллекции полностью инициализировано?
Да,
Можно ли изменить поведение, как unmarshaller создает граф объектов (от TOP до BOTTOM или от BOTTOM до TOP)?
нет
Реализации JAXB (JSR-222) собираются использовать синтаксические анализаторы SAX или StAX для эффективной обработки XML. Эти синтаксические анализаторы совершают глубокий обход документа XML. Из-за этого JAXB собирается заполнять объекты одинаково. Объект, соответствующий первому элементу в коллекции, будет полностью обработан, прежде чем JAXB даже узнает, что есть второй элемент в собираемой коллекции.