2014-05-13 19 views
9

kullanarak ek açıklamalarla XML serisini nasıl Aşağıdaki XML şeması vardır: Burada dikkat edilmesi gereken iki önemli şey vardırFasterXML

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> 

Ben POJO içine bu dönüştürmek gerekir:

  1. kursları

    bir etiket sarılmış değil nesnesi
  2. Bazı özelliklerin özellikleri

Bu xml'yi kaldırmak için FasterXML almak üzere nesnelere açıklama eklemeye ne gerek var?

@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 
} 

Şimdi, XmlMapper yerine ObjectMapper kullanmak zorunda: bu şekilde XML ek açıklamaları kullanabilirsiniz Bundan sonra

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

:

+0

string -> String –

cevap

12

Sen projenize jackson-dataformat-xml bağımlılık eklemek zorunda:

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

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

Yukarıdaki kod yazdırmaları:

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]]]