17.6 Castor

Castor XML 映射是一个开源的 XML 绑定框架。它允许使用者将包含在一个 Java 对象模型中的数据转换成 XML 文档,或者反之。Castor 默认并不需要额外的配置就可以使用。但如果使用者希望能够对框架行为拥有更多的控制,则可以通过在配置中引入一个映射文件来达到这一目的。

读者可以从 Castor 的项目主页上了解更多相关内容。Spring 对这一框架的集成代码都在 org.springframework.oxm.castor 包底下。

17.6.1 CastorMarshaller

与 JAXB 类似,CastorMarshaller 类同时实现了 Marshaller 和 Unmarshaller 接口。它可以通过以下配置来被引用:

  1. <beans>
  2. <bean id="castorMarshaller" class="org.springframework.oxm.castor.CastorMarshaller" />
  3. ...
  4. </beans>

17.6.2 映射

尽管 Castor 的默认编组行为基本能够适应大部分应用场景,有时候还是需要一些自定义的能力。这一需求可以通过使用一个 Castor 的映射文件来实现。更多信息请参考 Castor XML Mapping。

映射文件可以通过 mapppingLocation 属性进行设置,如下是一个配置了 classpath 资源的示例:

  1. <beans>
  2. <bean id="castorMarshaller" class="org.springframework.oxm.castor.CastorMarshaller" >
  3. <property name="mappingLocation" value="classpath:mapping.xml" />
  4. </bean>
  5. </beans>

17.6.3 基于 XML 架构的配置

一个 castor-marshaller 代表了一个 org.springframework.oxm.castor.CastorMarshaller 实例。示例如下:

编组器实例可以用两种方式进行配置,一种是(通过 mapping-location 属性)指定映射文件的位置 ,另一种则是(通过 target-class 或 target-package 属性)指定包含有相应 XML 描述信息的 Java POJO。后一种方式一般会与通过 XML 架构自动生成 Java 代码的功能结合使用。

以下是可用的标签属性:

属性 描述 是否必需
id 编组器的id no
encoding 反编组 XML 文件使用的编码 no
target-class 一个 Java POJO 类名,此类中包含一个(由代码自动生成器生成的) XML 类的描述信息 no
target-package 一个包含了(由代码自动生成器生成的)POJO 和相应 Castor XML 描述类的 Java 包名 no
mapping-location Castor XML 映射文件的位置 no