我从外部API接收xml文件,我无法更改。我正在使用Spring作业,逐项检索药物。我的问题在于解组到Pack的列表,如何正确地对它进行注释,因此它填充了包含在标签之间的对象,因为迄今为止最佳方案是null,如下面所示的配置列表。如何配置类,以便药物包含包的列表(或任何其他结构,如果这不可行)
<drugs xmlns="http://rejestrymedyczne.csioz.gov.pl/rpl/eksport-danych-v1.0">
<drug name="Zoledronic acid Fresenius Kabi" type="human" [more attributes...]>
<packs>
<pack size="1" [more attributes...]/>
<pack size="4" [more attributes...]/>
</packs>
</drug>
[more drugs...]
</drugs>
代表药物的类别。
//Lombok annotation generating getters/setters, constructors (boiler plate), shouldn't be harmful
@Data
@NoArgsConstructor
@AllArgsConstructor
@XmlRootElement(name = "drugs", namespace = "http://rejestrymedyczne.csioz.gov.pl/rpl/eksport-danych-v1.0")
@XmlAccessorType(XmlAccessType.FIELD)
public class ExternalDrug {
@XmlAttribute(name = "name")
private String name;
@XmlAttribute(name = "type")
private DrugType type;
@XmlElementWrapper(name = "packs")
@XmlElement(name = "pack")
private List<Pack> packs;
}
这就是Pack
//Again boiler plate
@Data
@NoArgsConstructor
@AllArgsConstructor
@XmlRootElement(name = "Packs")
@XmlAccessorType(XmlAccessType.FIELD)
public class Pack {
@XmlAttribute(name = "size")
private List<Pack> ;
}
请记住,我将文件翻译成英文,以便其他人更容易阅读,但我可能会犯这样的错误。
答案 0 :(得分:0)
在您将XMLElementWrapper和List元素添加到此
之后,它将起作用@XmlElementWrapper(name="packs", namespace = "http://rejestrymedyczne.csioz.gov.pl/rpl/eksport-danych-v1.0")
@XmlElement(name="pack", namespace ="http://rejestrymedyczne.csioz.gov.pl/rpl/eksport-danych-v1.0")
private List<Pack> packs;