为了账号安全,请及时绑定邮箱和手机立即绑定

Java jaxb从xml解组到java对象返回空值

Java jaxb从xml解组到java对象返回空值

天涯尽头无女友 2023-08-04 19:02:48
你好,我是 Jaxb 的新手,已经花了 3 个多小时搜索这个 NullPointerException 和这个解组的东西,但没有发现任何对我有用的东西。我尝试使用 inputStream、StringReader 和 Buffered reader,但是当我尝试将 XML 文件解组到 java 对象时,所有结果都为空值,这里是例外:java.lang.IllegalStateException:无法在 org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:784) ~[spring-boot-2.1.8.RELEASE.jar:2.1.8.RELEASE] 处执行 CommandLineRunner。 springframework.boot.SpringApplication.callRunners(SpringApplication.java:765) ~[spring-boot-2.1.8.RELEASE.jar:2.1.8.RELEASE] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:319 )〜[spring-boot-2.1.8.RELEASE.jar:2.1.8.RELEASE]在org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)〜[spring-boot-2.1.8.RELEASE。 jar:2.1.8.RELEASE] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1204) ~[spring-boot-2.1.8.RELEASE.jar:2.1.8.RELEASE] 在 kso.xmlprocessing。 XmlprocessingApplication.main(XmlprocessingApplication.java:10) ~[classes/:na] 位于 java.base/jdk。Internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法) ~[na:na] 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] 在 java.base/jdk .internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] 在 java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] 在 org .springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.1.8.RELEASE.jar:2.1.8.RELEASE] 引起:java.lang.NullPointerException: null 在 kso.xmlprocessing.service.SupplierServiceImpl.seedSuppliers(SupplierServiceImpl.java:38) ~[classes/:na] 在 kso.xmlprocessing.web.controller.CarDealerController.run(CarDealerController.java:17) ~[classes/:na] ] 在 org.springframework.boot.SpringApplication。callRunner(SpringApplication.java:781) ~[spring-boot-2.1.8.RELEASE.jar:2.1.8.RELEASE] ... 省略10个常见框架
查看完整描述

1 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

问题是您的 POJOS + 注释未正确映射到提供的 xml。具体来说,在“SupplierRootDto”字段中“supplierDtos”需要更改或使用注释来覆盖,如下所示:


@XmlRootElement(name = "suppliers")

@XmlAccessorType(XmlAccessType.FIELD)

public class SupplierRootDto {


    // ADD NAME TO MATCH THE XML ELEMENT

    @XmlElement(name = "supplier")

    private List<SupplierDto> supplierDtos;


    public SupplierRootDto() {

    }


    public List<SupplierDto> getSupplierDtos() {

        return supplierDtos;

    }


    public void setSupplierDtos(List<SupplierDto> supplierDtos) {

        this.supplierDtos = supplierDtos;

    }

}

然后它将正确解组。


查看完整回答
反对 回复 2023-08-04
  • 1 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信