我有一个xml文档,例如:
<ParentClass>
<FirstClass>
<Row>
<data1>...<data1>
<data2>...<data2>
</Row>
<Row>
<data1>...<data1>
<data2>...<data2>
</Row>
</FirstClass>
<SecondClass>
<Row>
<data1>...<data1>
<data2>...<data2>
</Row>
<Row>
<data1>...<data1>
<data2>...<data2>
</Row>
</SecondClass>
</ParentClass>
我有以下java类:
@XmlRootElement(name = "ParentClass")
@XmlAccessorType(XmlAccessType.FIELD)
public class ParentJavaClass
{
@XmlElement(name="FirstClass")
private List<FirstJavaClass> fc;
public List<FirstJavaClass> getFc()
{
return fc;
}
public void setFc(List<FirstJavaClass> fc)
{
this.fc = fc;
}
@XmlElement(name="SecondClass")
private List<SecondJavaClass> sc;
public List<SecondJavaClass> getSc()
{
return sc;
}
public void setSc(List<SecondJavaClass> sc)
{
this.sc = sc;
}
}
@XmlType(name = "Row", namespace = "Fc")
@XmlAccessorType(XmlAccessType.FIELD)
public class FirstJavaClass
{
private String data1;
private String data2;
// getters & setters
}
@XmlType(name = "Row", namespace = "Sc")
@XmlAccessorType(XmlAccessType.FIELD)
public class SecondJavaClass
{
private String data1;
private String data2;
// getters & setters
}
但是,当我打电话时
final ParentJavaClass x = (ParentJavaClass) jaxbUnmarshaller.unmarshal(file);
我的FirstJavaClass和amp;的结果列表SecondJavaClass具有所有空值。我认为“Row”元素正在绊倒我,但我不确定如何正确地注释。 请协助。感谢。
答案 0 :(得分:1)
您应该注释如下:
@XmlElementWrapper(name="FirstClass")
@XmlElement(name="Row")
private List<FirstJavaClass> fc;
@XmlElementWrapper(name="SecondClass")
@XmlElement(name="Row")
private List<SecondJavaClass> sc;
注释意味着:
@XmlElementWrapper
对应于您希望嵌套收藏数据的元素。FirstJavaClass
的每个实例都将对应于嵌套在Row
元素中的FirstClass
元素。调试技巧
如果您的JAXB对象模型没有解组正确,请尝试: