Jaxb unmarshaled list is null



我正在从外部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;

相关内容

  • 没有找到相关文章

最新更新