让我们说这些是对象。
@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
}
}
我可以使用类似于此示例的结构来解组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)?
提前致谢。
答案 0 :(得分:1)
实际问题是。当unmarshaller打电话时 Root.setItems(items)保证每个Item的每个属性 从这个集合完全初始化?
是,
是否可以更改unmarshaller构建的行为 对象图(从TOP到BOTTOM或从BOTTOM到TOP)?
没有
JAXB(JSR-222)实现将利用SAX或StAX解析器来有效地处理XML。这些解析器对XML文档进行深度优先遍历。因此,JAXB将以相同的方式填充对象。在JAXB甚至知道要处理的集合中有第二个项目之前,将完全处理与集合中第一个项目对应的对象。