Part V. 数据访问-21. 使用O/X Mappers编组XML-21.2 Marshaller 和 Unmarshaller

如引言中所述,编组者将对象序列化为XML,解组器将XML流反序列化为对象。 在本节中,我们将介绍用于此目的的两个Spring接口。

21.2.1 Marshaller

Spring提取org.springframework.oxm.Marshaller接口后面的所有编组操作,其主要方法如下所示。

public interface Marshaller {

/**
* Marshal the object graph with the given root into the provided Result.
*/

void marshal(Object graph,Result result) throws XmlMappingException,IOException;
}

Marshaller接口有一个主要方法,它将给定的对象编组给给定的javax.xml.transform.Result。 结果是一个标签接口,基本上表示XML输出抽象:具体实现包装各种XML表示,如下表所示。

Result implementation Wraps XML representation
Domresult org.w3c.dom.Node
SAXResult org.xml.sax.ContentHandler
StreamResult java.io.File,java.io.OutputStream,orjava.io.Writer

尽管marshal()方法接受一个普通对象作为其第一个参数,但大多数Marshaller实现都不能处理任意对象。 相反,一个对象类必须映射到一个映射文件中,该文件标有注解,在编组器中注册,或者有一个公共的基类。 请参阅本章的其他部分,以确定您选择的O / X技术如何管理此。

21.2.2 Unmarshaller

类似于Marshaller,有org.springframework.oxm.Unmarshaller接口。

Unmarshaller {

/**
* Unmarshal the given provided Source into an object graph.
*/

Object unmarshal(Source source) }

该接口还有一种方法,它从给定的javax.xml.transform.source一个XML输入抽象)中读取,并返回读取的对象。 与Result一样,Source是一个具有三个具体实现的标记接口。 每个包装一个不同的XML表示,如下表所示。

Source implementation DOMSource SAXSource org.xml.sax.InputSource,and org.xml.sax.XMLReader
StreamSource java.io.File,java.io.InputStream,or java.io.Reader

即使有两个单独的编组接口(MarshallerUnmarshaller),Spring-WS中的所有实现都在一个类中实现。 这意味着您可以连接一个编组器类,并将其作为应用程序中的编组器和解组器引用。

21.2.3 XmlMappingException

使用XmlMappingException作为根异常,Spring将基础O/X映射工具中的异常转换为其自己的异常层次结构。 可以预期,这些运行时异常包装原始异常,因此不会丢失任何信息。

另外,MarshallingFailureExceptionUnmarshallingFailureException提供编组和解组合操作之间的区别,即使底层O / X映射工具不这样做。

O/X映射异常层次结构如下图所示:


O/X映射异常层次结构

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇