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();
        }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。