gpt4 book ai didi

java - JAXB(Grand)子元素数据未填充

转载 作者:行者123 更新时间:2023-11-30 06:31:37 27 4
gpt4 key购买 nike

我在解码(孙)子表的元素时遇到问题。这是传入数据的结构:

<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>

捕获数据的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

当我将传入数据解码到此结构中时,我获得了 DataData 和 EntityData 的正确行数,但没有一个元素具有数据。我尝试过使用和不使用 setter,但这没有什么区别。

最佳答案

在您的 MainDoc 中类,您需要在列表上使用元素包装器。

@XmlElementWrapper(name="dates")
@XmlElement(name="date")
public List<DateData> dates;

@XmlElementWrapper(name="entities")
@XmlElement(name="entity")
public List<EntityData> entities;

此外,您的 XML 不会关闭 <entity>项目,它应该具有 <entity> 之一和 </entity> 之一而不是 <entity> 中的两个.

关于java - JAXB(Grand)子元素数据未填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45982688/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com