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反序列化爲新的類實例?
謝謝。看來這個功能是關鍵。 –