Мне дали XML без схемы. Я построил все классы, и большая часть XML правильно распаковывается.
Однако у меня есть один список, который в зависимости от аннотаций возвращает:
Список с правильным номером элементы, в которых значения равны нулю для каждого, или
Возвращается только последний элемент, если значение верное.
XML:
...
<assessedValues>
<assessment>
<taxYear>2019</taxYear>
<landMarketValue>29340</landMarketValue>
<improvementMarketValue>163710</improvementMarketValue>
<homesteadCapValue>0</homesteadCapValue>
<agMarketValue>0</agMarketValue>
<agAssessedValue>0</agAssessedValue>
<totalMarketValue>193050</totalMarketValue>
<totalAssessedValue>193050</totalAssessedValue>
<certified>true</certified>
<woExemptAmount>5036.350176000001</woExemptAmount>
<exemptions>
<exemption>Alpha</exemption>
<exemption>Bravo</exemption>
<exemption>Charlie</exemption>
<exemption>Delta</exemption>
</exemptions>
</assessment>
</assessedValues>
...
Unmarshalled (версия 1):
assessedValues=
AssessedValuesDTO{assessments=[
AssessmentDTO{
taxYear='2019',
landMarketValue='29340',
improvementMarketValue='163710',
homesteadCapValue='0',
agMarketValue='0',
agAssessedValue='0',
totalMarketValue='193050',
totalAssessedValue='193050',
certified='true',
woExemptAmount='5036.350176000001',
exemptions=[
ExemptionDTO{exemption='null'},
ExemptionDTO{exemption='null'},
ExemptionDTO{exemption='null'},
ExemptionDTO{exemption='null'}]}
]}
Unmarshalled (версия 2):
assessedValues=
AssessedValuesDTO{assessments=[
AssessmentDTO{
taxYear='2019',
landMarketValue='29340',
improvementMarketValue='163710',
homesteadCapValue='0',
agMarketValue='0',
agAssessedValue='0',
totalMarketValue='193050',
totalAssessedValue='193050',
certified='true',
woExemptAmount='5036.350176000001',
exemptions=[
ExemptionDTO{exemption='Delta'}]}
]}
AsotedValue:
//@XmlRootElement(name="assessedValues")
public class AssessedValuesDTO {
List<AssessmentDTO> assessments;
public List<AssessmentDTO> getAssessments() {
return assessments;
}
//@XmlElementWrapper(name="assessedValues")
@XmlElement(name = "assessment")
public void setAssessments(List<AssessmentDTO> assessments) {
this.assessments = assessments;
}
@Override
public String toString() {
return "AssessedValuesDTO{" +
"assessments=" + assessments +
'}';
}
}
Оценка :
//@XmlRootElement(name="assessment")
@XmlAccessorType(XmlAccessType.FIELD)
public class AssessmentDTO {
String taxYear;
String landMarketValue;
String improvementMarketValue;
String homesteadCapValue;
String agMarketValue;
String agAssessedValue;
String totalMarketValue;
String totalAssessedValue;
String certified;
String woExemptAmount;
@XmlElementWrapper(name="exemptions")
@XmlElement(name = "exemption", type=ExemptionDTO.class)
List<ExemptionDTO> exemptions;
@Override
public String toString() {
return "\n\t\tAssessmentDTO{" +
"taxYear='" + taxYear + '\'' +
", landMarketValue='" + landMarketValue + '\'' +
", improvementMarketValue='" + improvementMarketValue + '\'' +
", homesteadCapValue='" + homesteadCapValue + '\'' +
", agMarketValue='" + agMarketValue + '\'' +
", agAssessedValue='" + agAssessedValue + '\'' +
", totalMarketValue='" + totalMarketValue + '\'' +
", totalAssessedValue='" + totalAssessedValue + '\'' +
", certified='" + certified + '\'' +
", woExemptAmount='" + woExemptAmount + '\'' +
", exemptions=" + exemptions +
"}\n";
}
}
Исключение:
//@XmlRootElement(name="exemption")
//@XmlAccessorType(XmlAccessType.FIELD)
public class ExemptionDTO {
//@XmlElement(name = "exemption")
String exemption;
public String getExemption() {
return exemption;
}
public void setExemption(String exemption) {
this.exemption = exemption;
}
@Override
public String toString() {
return "\n\t\t\tExemptionDTO{" +
"exemption='" + exemption + '\'' +
'}';
}
}
У меня есть списки в другой части XML, работающие нормально, зачем мне это поведение? Не уверен, если проблема или нет, но я запускаю Java 11.
Я думаю, может быть, мне нужно переместить список в выделенный DTO, но кажется, что этот способ работает в других частях кода, поэтому Я в тупике.
Любая помощь приветствуется. Спасибо.