2014-05-13 9 views
9

를 사용하여 주석을 XML을 역 직렬화하는 방법 나는 다음과 같은 XML 스키마가 : 여기 주목해야 할 두 가지 중요한 일이있다FasterXML

public class Schedule 
{ 
    public int semester; 
    public Course[] courses; 
} 

public class Course 
{ 
    public String code; 
    public int credits; 
    public String name; 
} 

:

<Courses semester="1"> 
    <Course code="A231" credits="3">Intermediate A</Course> 
    <Course code="A105" credits="2">Intro to A</Course> 
    <Course code="B358" credits="4">Advanced B</Course> 
</Courses> 

내가 같이 POJO에이 변환 할 필요를 :

  1. 코스

    는 태그에 싸여되지 않은 객체
  2. 일부 속성 값이

이 XML을 deserialize하기 위해 FasterXML을 얻으려면 내 개체에 주석을 달아야합니까?

@JacksonXmlRootElement(localName = "Courses") 
class Schedule { 

    @JacksonXmlProperty(isAttribute = true) 
    private int semester; 

    @JacksonXmlProperty(localName = "Course") 
    private Course[] courses; 

    // getters, setters, toString, etc 
} 

class Course { 

    @JacksonXmlProperty(isAttribute = true) 
    private String code; 

    @JacksonXmlProperty(isAttribute = true) 
    private int credits; 

    @JacksonXmlText(value = true) 
    private String name; 

    // getters, setters, toString, etc 
} 

지금, 당신은 XmlMapper 대신 ObjectMapper를 사용해야합니다 :이 방법으로 XML 주석을 사용할 수 후

<dependency> 
    <groupId>com.fasterxml.jackson.dataformat</groupId> 
    <artifactId>jackson-dataformat-xml</artifactId> 
    <version>2.3.3</version> 
</dependency> 

:

+0

문자열 -> 문자열 –

답변

12

당신은 당신의 프로젝트에 jackson-dataformat-xml 종속성을 추가해야합니다 :

JacksonXmlModule module = new JacksonXmlModule(); 
module.setDefaultUseWrapper(false); 
XmlMapper xmlMapper = new XmlMapper(module); 

System.out.println(xmlMapper.readValue(xml, Schedule.class)); 

상기 스크립트 출력 :

Schedule [semester=1, courses=[[code=A231, credits=3, name=Intermediate A], [code=A105, credits=2, name=Intro to A], [code=B358, credits=4, name=Advanced B]]]