1
鉴于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
}
我正在使用Jackson XmlMapper
类来执行反序列化。如果我将<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
字段为空。
我试过用@JacksonXmlRootElement(localName = "inner")
注解Inner
类,但是这并没有改变输出。
我可以创建一个代表<outer>
元素的类,但这看起来很浪费。我大概也可以创建一个包含<inner>
元素之间的xml的新字符串,但是再次感觉有点冒险。
在我的情况下,xml被一个单独的系统广播,我无法控制,所以我可以简单地修改xml结构。
是否有可能将“内部”xml反序列化为新的类实例?
谢谢。看来这个功能是关键。 –