Java JAXB(大)子元素数据未填充
我在解组(大)子表的元素时遇到问题。以下是传入数据的结构:Java JAXB(大)子元素数据未填充,java,jaxb,Java,Jaxb,我在解组(大)子表的元素时遇到问题。以下是传入数据的结构: <searchResultDocuments> <pageNumber>1</pageNumber> <pageSize>1</pageSize> <results> <contentType>text/html</contentType> <fileName>theFile
<searchResultDocuments>
<pageNumber>1</pageNumber>
<pageSize>1</pageSize>
<results>
<contentType>text/html</contentType>
<fileName>theFile.txt</fileName>
<mainDoc>
<dates>
<date>
<match>20170822</match>
<startOffset>4324</startOffset>
</date>
...
</dates>
<entities>
<entity>
<startOffsets>4324 5634</startOffsets>
<entityType>featuretype</entityType>
<entity>
...
</entities>
</mainDoc>
</results>
...
</searchResultDocuments>
1.
1.
文本/html
theFile.txt
20170822
4324
...
4324 5634
特征类型
...
...
捕获数据的java类如下所示:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="searchResultDocuments")
public class SearchReturnData{
@XmlElement
private int pageNumber;
@XmlElement
private int pageSize;
@XmlElement(name="results")
private List<ResultData> resultData;
//(no setters, getters only in all classes, although I tried it both ways)
}// end of SearchResultData
@XmlAccessorType(XmlAccessType.FIELD)
public class ResultData{
@XmlElement
private String contentType;
@XmlElement
private String fileName;
@XmlElement(name="mainDoc")
private MainDoc mainDoc;
} // end of ResultData
@XmlAccessorType(XmlAccessType.FIELD)
public class MainDoc{
@XmlElement(name="dates")
private List<DateData> dates;
@XmlElement(name="entities")
private List<EntityData> entities;
}// end of MainDoc
@XmlType(name="date")
public class DateData{
@XmlElement(name="match")
private String match;
@XmlElement(name="startOffset")
private String startOffset;
}// end of DateData
@XmlType(name="entity")
public class EntityData{
@XmlElement(name="startOffsets")
private String startOffsets;
@XmlElement(name="entityType")
private String entityType;
}// end of EntityData
@xmlacessortype(xmlacesstype.FIELD)
@XmlRootElement(name=“searchResultDocuments”)
公共类搜索返回数据{
@XmlElement
专用int页码;
@XmlElement
私有int页面大小;
@xmlement(name=“results”)
私有列表结果数据;
//(虽然我尝试了两种方法,但没有二传,只有在所有类中才有获得者)
}//SearchResultData结束
@XmlAccessorType(XmlAccessType.FIELD)
公共类结果数据{
@XmlElement
私有字符串contentType;
@XmlElement
私有字符串文件名;
@xmlement(name=“mainDoc”)
私人MainDoc MainDoc;
}//结果数据结束
@XmlAccessorType(XmlAccessType.FIELD)
公共类MainDoc{
@xmlement(name=“dates”)
私人名单日期;
@xmlement(name=“entities”)
私人名单实体;
}//MainDoc结束
@XmlType(name=“date”)
公共类数据{
@xmlement(name=“match”)
私有字符串匹配;
@xmlement(name=“startOffset”)
私有字符串startOffset;
}//日期结束数据
@XmlType(name=“entity”)
公共类实体数据{
@xmlement(name=“startOffsets”)
私有字符串startoffset;
@XmlElement(name=“entityType”)
私有字符串entityType;
}//实体数据结束
当我将传入的数据解组到这个结构中时,我得到了正确数量的DataData和EntityData行,但是没有一个元素有数据。我尝试过使用和不使用setter,但没有区别。在
MainDoc
类中,您需要在列表中使用元素包装器
@XmlElementWrapper(name="dates")
@XmlElement(name="date")
public List<DateData> dates;
@XmlElementWrapper(name="entities")
@XmlElement(name="entity")
public List<EntityData> entities;
@xmlementwrapper(name=“dates”)
@xmlement(name=“date”)
公开名单日期;
@XmlElementWrapper(name=“entities”)
@xmlement(name=“entity”)
公开名单实体;
另外,您的XML没有关闭
项,它应该有
中的一个和
中的一个,而不是中的两个。谢谢您提供的信息。我马上就去试试。实际标签是否正确关闭;我是个笨手笨脚的人,我也打算提起这件事。数据来自其他地方;我只是想把它吃掉。