springboot使用jackson解析XML

springboot使用jackson解析XML

maven依賴

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

一個xml例子

<?xml version="1.0" encoding="UTF-8"?>
<book>
    <remote name="java" url="http://bookstack.cn/" />
    <remote name="c" url="http://jianshu.cn/" />
    <remote name="javascript" url="http://www.w3school.com.cn/" />
    <default name="java" />

    <project name="Java核心技術" author="Cay S. Horstmann" />
    <project name="Learning Spring Boot 2.0" author="Greg L. Turnquist" /> 
</book>

定義好java bean

@Data
@JacksonXmlRootElement(localName = "book")  //root根是book
@JsonIgnoreProperties(ignoreUnknown = true)
public class Book {
    @JacksonXmlElementWrapper(useWrapping = false)    //remote是一個沒有list包圍的list
    private List<Remote> remote;
    @JacksonXmlElementWrapper(useWrapping = false)
    private List<Project> project;
    @JacksonXmlProperty(localName = "default")   //default是保留字,不能作爲bean名稱,因此用localname指定
    private DefaultEle defaultvalue;
}

定義下層的bean

@Data
@JsonIgnoreProperties(ignoreUnknown = true)   //忽略掉xml裏不關注的element
public class Project {
    @JacksonXmlProperty(isAttribute = true)   //name是project的attribute屬性,不是value
    private String name;
}

java代碼

        InputStream input = Main.class.getResourceAsStream("/book.xml");
        JacksonXmlModule module = new JacksonXmlModule();
        XmlMapper mapper = new XmlMapper(module);
        try {
            Book book = mapper.readValue(input, Book.class);
            System.out.println(book.getProject().get(0).getName());
        } catch (IOException e) {
            e.printStackTrace();
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章