:역 직렬화 내부 부분은 다음 (간체) 형식으로 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
클래스를 사용하고 있습니다. xml 문자열에서 <outer>
을 제거하면 분명히 작동합니다.
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)
나는
inner
의 모든 필드가 null 인
<outer>
요소를두면.
Inner
클래스에 @JacksonXmlRootElement(localName = "inner")
으로 주석을 달았지만 출력이 변경되지 않았습니다.
나는 <outer>
요소를 나타내는 클래스를 만들 수 있지만 이는 낭비적인 것처럼 보입니다. <inner>
요소 사이의 xml을 포함하는 새로운 문자열을 만들 수도 있지만 다시 약간의 해킹을 느낍니다.
제 경우에는 xml이 제어 할 수없는 별도의 시스템에서 브로드 캐스팅되므로 xml 구조를 간단히 수정할 수 있습니다.
"내부"XML을 새로운 클래스 인스턴스로 deserialize 할 수 있습니까?
감사합니다. 기능이 핵심이었던 것 같습니다. –