【发布时间】:2020-05-12 18:46:51
【问题描述】:
我收到大型 XML 文档,我需要从中提取一些字段,然后返回它们。 问题是,当我在查看有关如何使用 Jackson 反序列化对象的各种解决方案时,主要是 1 对 1 映射,或者构建自定义解析器。 我的情况看起来或多或少是这样的
XML
<a>
<b>
<c>val</c>
<d x='val' z='val'><e>val</e><f>lot of irrelevant fields</f></d>
<g>lot of irrelevant fields</g>
<b>
<a>
我只对 C X Z E 的值感兴趣,所以在 java 中重新创建整个结构绝对是不行的。实现自定义解析器听起来也有点矫枉过正。
是否有更好的解决方案,IE 通过注释或类似的东西?我记得前段时间,我见过允许通过注释来实现它的库,但现在我在可以使用的库方面受到了一些限制。
【问题讨论】:
-
您可以构建一个最小的 dto 并使用
@JsonIgnoreProperties(ignoreUnknown = true)注释类,请参阅 baeldung.com/jackson-deserialize-json-unknown-properties -
@MichaelKreutz 这个例子是关于 JSON 的,而我正在解析 XML 会起作用吗?我需要在我的 dto 中复制嵌套结构吗?因为它比我的例子稍微复杂一些
-
我没有尝试过,但我认为它应该也适用于 XML。您需要对您感兴趣的字段的结构进行建模——您可以省略所有其他字段。 baeldung.com/jackson-xml-serialization-and-deserialization 还将
@Json前缀注释与 xml 解析结合使用...