给定以下(简化)格式的 XML:
<outer><inner><field1>a</field1><field2>b</field2><field3>c</field3></inner></outer>
我想将元素反序列<inner>
化为代表该元素的类并丢弃其余元素。
public class Inner {
private String field1;
private String field2;
private String field3;
// getters, setters, ctor
}
我正在使用 JacksonXmlMapper
类来执行反序列化。如果我去掉<outer>
xml 字符串,它显然可以工作。
XmlMapper xmlMapper = new XmlMapper();
// in my scenario the `<inner>` element actually contains fields I don't care about
xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Inner inner = xmlMapper.readValue(xml, Inner.class);
System.out.println(inner);
// Inner(field1=a, field2=b, field3=c)
如果我留下<outer>
元素,所有字段inner
都为空。
我试过用注释Inner
类,@JacksonXmlRootElement(localName = "inner")
但这并没有改变输出。
我可以创建一个代表<outer>
元素的类,但这似乎很浪费。我可能还可以创建一个仅包含<inner>
元素之间的 xml 的新字符串,但同样感觉有点 hacky。
在我的情况下,xml 是由一个我无法控制的单独系统广播的,所以我可以简单地修改 xml 结构。
是否可以将“内部”xml 反序列化为新的类实例?