我正在从外部API接收无法更改的xml文件。我正在使用带有项目阅读器的 Spring 作业,可以逐个检索药物。我的问题在于解组到包列表中,如何正确注释它,以便它填充标签之间包含的对象,到目前为止,最好的情况是空作为列表,配置如下所示。如何配置类,以便药物包含包列表(或任何其他结构,如果这个不可行)
<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;
}
包来了
//Again boiler plate
@Data
@NoArgsConstructor
@AllArgsConstructor
@XmlRootElement(name = "Packs")
@XmlAccessorType(XmlAccessType.FIELD)
public class Pack {
@XmlAttribute(name = "size")
private List<Pack> ;
}
请记住,我将文件翻译成英文,以便其他人更容易阅读,但是这样做可能会犯一些错误。
在
将命名空间添加到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;