Java 无法使用Jackson解析XML,无法填充模型
我正在尝试使用Jackson库解析bellow xml,但运气不好。我用我的模型做了一些尝试,但我没有发现问题 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
谢谢你的帮助,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”)
私人长时间工作;
}
}
你的根对象是elementlitre
而不是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;
}
}