Java 无法使用Jackson解析XML,无法填充模型

Java 无法使用Jackson解析XML,无法填充模型,java,jackson,jackson-dataformat-xml,Java,Jackson,Jackson Dataformat Xml,我正在尝试使用Jackson库解析bellow xml,但运气不好。我用我的模型做了一些尝试,但我没有发现问题 XML: 解析总是毫无例外地通过,但条目列表总是空的 谢谢你的帮助,thanx 你肯定得这样做: @JacksonXmlRootElement(localName = "litre") public @Data class Litre { @JacksonXmlProperty(localName = "krt") private Krt krt; publ

我正在尝试使用Jackson库解析bellow xml,但运气不好。我用我的模型做了一些尝试,但我没有发现问题

XML:

解析总是毫无例外地通过,但条目列表总是空的


谢谢你的帮助,thanx

你肯定得这样做:

@JacksonXmlRootElement(localName = "litre")
public @Data class Litre {

    @JacksonXmlProperty(localName = "krt")
    private Krt krt;

    public static @Data class Krt {

        @JacksonXmlProperty(localName = "geskrt")
        private Geskrt geskrt;
    }

    public static @Data class Geskrt {

        @JacksonXmlProperty(localName = "pkrt")
        @JacksonXmlElementWrapper(useWrapping = false)
        private List<Pkrt> pkrt;
    }

    public static @Data class Pkrt {

        @JacksonXmlProperty(isAttribute = true, localName = "data1")
        private double dataOne;

        @JacksonXmlProperty(isAttribute = true, localName = "data2")
        private double dataTwo;

        @JacksonXmlProperty(localName = "ints")
        private double inters;

        private String time;

        @JacksonXmlProperty(namespace = "xtpx:hor")
        private long hours;
    }
}
@JacksonXmlRootElement(localName=“l”)
公共@数据类升{
@JacksonXmlProperty(localName=“krt”)
私人Krt Krt;
公共静态@数据类Krt{
@JacksonXmlProperty(localName=“geskrt”)
私人Geskrt Geskrt;
}
公共静态@数据类Geskrt{
@JacksonXmlProperty(localName=“pkrt”)
@JacksonXmlElementWrapper(useWrapping=false)
私人名单;
}
公共静态@数据类Pkrt{
@JacksonXmlProperty(isAttribute=true,localName=“data1”)
专用双数据一;
@JacksonXmlProperty(isAttribute=true,localName=“data2”)
二是私人双数据;
@JacksonXmlProperty(localName=“ints”)
私人双人间;
私有字符串时间;
@JacksonXmlProperty(namespace=“xtpx:hor”)
私人长时间工作;
}
}

你的根对象是element
litre
而不是
geskrt
-你知道吗?是的,有点打字错误。。。我将编辑问题,谢谢。这应该如何工作?您跳过元素
krt
geskrt
,并假设Jackson反序列化了内部部分?当您想要像这样使用Jackson时,您必须将完整的XML结构建模为Java模型,而不仅仅是您认为对您有用的部分。
@JacksonXmlRootElement(localName = "litre")
public @Data class Model {

    @JacksonXmlProperty(localName = "pkrt")
    @JacksonXmlElementWrapper(useWrapping = false)
    private List<Data> entries;

    public static @Data class Data {
        @JacksonXmlProperty(isAttribute = true, localName = "data1")
        private double dataOne;
        @JacksonXmlProperty(isAttribute = true, localName = "data2")
        private double dataTwo;
        @JacksonXmlProperty(localName = "ints")
        private double inters;
        private String time;
        @JacksonXmlProperty(namespace = "xtpx:hor")
        private long hours;
    }
}
Model model = mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
                    .readValue(filePath.toFile(), Model.class);
@JacksonXmlRootElement(localName = "litre")
public @Data class Litre {

    @JacksonXmlProperty(localName = "krt")
    private Krt krt;

    public static @Data class Krt {

        @JacksonXmlProperty(localName = "geskrt")
        private Geskrt geskrt;
    }

    public static @Data class Geskrt {

        @JacksonXmlProperty(localName = "pkrt")
        @JacksonXmlElementWrapper(useWrapping = false)
        private List<Pkrt> pkrt;
    }

    public static @Data class Pkrt {

        @JacksonXmlProperty(isAttribute = true, localName = "data1")
        private double dataOne;

        @JacksonXmlProperty(isAttribute = true, localName = "data2")
        private double dataTwo;

        @JacksonXmlProperty(localName = "ints")
        private double inters;

        private String time;

        @JacksonXmlProperty(namespace = "xtpx:hor")
        private long hours;
    }
}