Spring OXM - 概述

Spring 框架使用全局编组器/解组器接口提供 Object/XML 或 O/X 映射,并允许轻松切换 O/X 映射框架。 将对象转换为 XML 的过程称为 XML 编组/序列化,而从 XML 转换为对象的过程称为 XML 解组/反序列化。

Spring 框架提供了 Marshaller 和 UnMarshaller 接口,其中 Marshaller 接口负责将对象编组为 XML,而 UnMarshaller 接口将 xml 反序列化为对象。 以下是使用 Spring OXM 框架的主要好处。

  • 轻松配置 − 使用 spring bean 上下文工厂,marshaller/unmarshaller 的创建非常容易,并且可以配置,而无需担心诸如 JAXB 上下文、JiBX 绑定工厂等 O/X 库结构。可以将 marsaller/unmarshaller 配置为任何其他 bean。

  • 接口一致 − Marshaller 和 UnMarshaller 是全局接口。 这些接口在其他 O/X 映射框架之上提供了一个抽象层,并允许在不更改代码或几乎不更改代码的情况下在它们之间切换。

  • 异常处理一致 − 所有基础异常都映射到 XmlMappingException 作为根异常。 因此,开发人员不必担心底层 O/X 映射工具自身的异常层次结构。


Marshaller

Marshaller 是一个单一方法编组的接口。

实例


public interface Marshaller {
   /**
      * Marshals the object graph with the given root into the provided Result.
   */
   void marshal(Object graph, Result result)
      throws XmlMappingException, IOException;
}

其中 graph 是要编组的任何对象, result 是表示 XML 输出的标记接口。 以下是可用的类型 −

  • javax.xml.transform.dom.DOMResult − 代表 org.w3c.dom.Node。

  • javax.xml.transform.sax.SAXResult − 表示 org.xml.sax.ContentHandler。

  • javax.xml.transform.stream.StreamResult − 表示 java.io.File、java.io.OutputStream 或 java.io.Writer。


UnMarshaller

UnMarshaller 是一个单一方法解组的接口。

实例


public interface UnMarshaller {
   /**
      * Unmarshals the given provided Source into an object graph.
   */
   Object unmarshal(Source source)
      throws XmlMappingException, IOException;
}

其中 source 是表示 XML 输入的标记接口。 以下是可用的类型 −

  • javax.xml.transform.dom.DOMSource − 代表 org.w3c.dom.Node。

  • javax.xml.transform.sax.SAXSource − 表示 org.xml.sax.InputSource 和 org.xml.sax.XMLReader。

  • javax.xml.transform.stream.StreamSource − 表示 java.io.File、java.io.InputStream 或 java.io.Reader。