나는 다음과 같은 XML 파일이 있습니다Jackson-XML XML 속성을 무시하려면 어떻게해야합니까?
<Channel>
<name>test</name>
<number type="example">123</number>
</Channel>
다음과 같은 자바 클래스 :
public class Channel {
public String name;
public Integer number;
@Override
public String toString() {
return "Channel{" + "name='" + name + '\'' + ", number=" + number + '}';
}
}
내가 클래스 채널의 객체로 XML을 읽을 잭슨을 사용하고자합니다. 여기에 내가이하려고 노력하는 방법은 다음과 같습니다
JacksonXmlModule module = new JacksonXmlModule();
XmlMapper xmlMapper = new XmlMapper(module);
InputStream stream = App.class.getResourceAsStream(FILE_NAME);
Channel value = xmlMapper.readValue(stream, Channel.class);
System.out.println(value);
을하지만, 나는 다음과 같은 오류가 발생합니다 : 나는 그것이 XML의 것을 알고
Channel{name='test', number=123}
:
Exception in thread "main" com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of int out of START_OBJECT token
at [Source: [email protected]; line: 3, column: 5] (through reference chain: org.robinski.Channel["number"])
나는 다음과 같은 출력을 얻을 것으로 예상 이 문제를 일으키는 'type = "example"'특성 속성을 제거하면 모든 것이 작동합니다. 하지만 일반적으로 외부 소스에서 XML을 받기 때문에 수동으로 제거 할 수는 없습니다.
여기 전체 소스 코드를 볼 수 있습니다 : http://pastie.org/9870866.
Jackson을 사용하여 XML 파일을 채널 클래스의 객체로 구문 분석하려면 어떻게해야합니까?
가장 도움이 될 수있는 한 가지 : 최신 버전의 Jackson 구성 요소를 사용하십시오 (이상적으로는 2.5.0이지만 2.4.5도 작동 함). 추가 된 몇 가지 버그 수정 사항이 있습니다.이 문제는 나에게 버그처럼 들립니다. 문제가 지속되면 https://github.com/FasterXML/jackson-dataformat-xml/에서 문제를 제기하는 것이 좋습니다. – StaxMan
@StaxMan jackson-dataformat-xml의 2.5.0 버전을 검사하고 동일한 오류 ("START_OBJECT 토큰에서 int 인스턴스를 역 직렬화 할 수 없습니다")를 제공합니다. 버그인지 또는 예상되는 동작인지 확실하지 않습니다. – JustAC0der