阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

使用Jackson

87次阅读
没有评论

共计 1288 个字符,预计需要花费 4 分钟才能阅读完成。

前面我们介绍了 DOM 和 SAX 两种解析 XML 的标准接口。但是,无论是 DOM 还是 SAX,使用起来都不直观。

观察 XML 文档的结构:

<?xml version="1.0" encoding="UTF-8" ?>
<book id="1">
    <name>Java 核心技术</name>
    <author>Cay S. Horstmann</author>
    <isbn lang="CN">1234567</isbn>
    <tags>
        <tag>Java</tag>
        <tag>Network</tag>
    </tags>
    <pubDate/>
</book>

我们发现,它完全可以对应到一个定义好的 JavaBean 中:

public class Book {public long id;
    public String name;
    public String author;
    public String isbn;
    public List<String> tags;
    public String pubDate;
}

如果能直接从 XML 文档解析成一个 JavaBean,那比 DOM 或者 SAX 不知道容易到哪里去了。

幸运的是,一个名叫 Jackson 的开源的第三方库可以轻松做到 XML 到 JavaBean 的转换。我们要使用 Jackson,先添加一个 Maven 的依赖:

  • com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.10.1

然后,定义好 JavaBean,就可以用下面几行代码解析:

InputStream input = Main.class.getResourceAsStream("/book.xml");
JacksonXmlModule module = new JacksonXmlModule();
XmlMapper mapper = new XmlMapper(module);
Book book = mapper.readValue(input, Book.class);
System.out.println(book.id);
System.out.println(book.name);
System.out.println(book.author);
System.out.println(book.isbn);
System.out.println(book.tags);
System.out.println(book.pubDate);

注意到 XmlMapper 就是我们需要创建的核心对象,可以用 readValue(InputStream, Class) 直接读取 XML 并返回一个 JavaBean。运行上述代码,就可以直接从 Book 对象中拿到数据:

1
Java 核心技术
Cay S. Horstmann
1234567
[Java, Network]
null

如果要解析的数据格式不是 Jackson 内置的标准格式,那么需要编写一点额外的扩展来告诉 Jackson 如何自定义解析。这里我们不做深入讨论,可以参考 Jackson 的官方文档。

练习

使用 Jackson 解析 XML。

下载练习

小结

使用 Jackson 解析 XML,可以直接把 XML 解析为 JavaBean,十分方便。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-08-05发表,共计1288字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中