在使用Castor将java对象转换为xml文件时,会遇到Clob类型的属性的转换。Castor中没有Clob类型的处理器,因此需要我们自己实现一个ClobFieldHandler。
例如:我们要将Root.java转换成一个xml文件。
1.Root.java
package lab.castor.lab01;
import java.sql.Clob;
public class Root {
private Clob comment;
public Clob getComment() {
return comment;
}
public void setComment(Clob comment) {
this.comment = comment;
}
}
2.mapping.xml
<?xml version="1.0"?>
<mapping>
<class name="lab.castor.lab01.Root">
<field name="comment" type="string" handler="lab.castor.lab01.ClobFieldHandler">
<bind-xml node="comment"/>
</field>
</class>
</mapping>
3.ClobFieldHandler.java
package lab.castor.lab01;
import java.io.Reader;
import java.sql.Clob;
import org.exolab.castor.mapping.GeneralizedFieldHandler;
public class ClobFieldHandler extends GeneralizedFieldHandler {
/**
* Creates a new ClobFieldHandler instance
*/
public ClobFieldHandler() {
super();
}
/**
* This method is used to convert the value when the getValue method is called. The getValue method will obtain the
* actual field value from given 'parent' object. This convert method is then invoked with the field's value. The
* value returned from this method will be the actual value returned by getValue method.
*
* @param value the object value to convert after performing a get operation
* @return the converted value.
*/
public Object convertUponGet(Object value) {
if (value == null) {
return null;
}
StringBuffer sb = new StringBuffer();
try {
Clob clob = (Clob) value;
Reader reader = clob.getCharacterStream();
if (reader == null) {
return null;
}
char[] charbuf = new char[4096];
// 解决4096字节大小的限制
for (int i = reader.read(charbuf); i > 0; i = reader.read(charbuf)) {
sb.append(charbuf, 0, i);
}
} catch (Exception e) {
//
}
return sb.toString();
}
/**
* This method is used to convert the value when the setValue method is called. The setValue method will call this
* method to obtain the converted value. The converted value will then be used as the value to set for the field.
*
* @param value the object value to convert before performing a set operation
* @return the converted value.
*/
public Object convertUponSet(Object value) {
return null;
}
/**
* Returns the class type for the field that this GeneralizedFieldHandler converts to and from. This should be the
* type that is used in the object model.
*
* @return the class type of of the field
*/
public Class getFieldType() {
return Clob.class;
}
/**
* Creates a new instance of the object described by this field.
*
* @param parent The object for which the field is created
* @return A new instance of the field's value
* @throws IllegalStateException This field is a simple type and cannot be instantiated
*/
public Object newInstance(Object parent) throws IllegalStateException {
// -- Since it's marked as a string...just return null,
// -- it's not needed.
return null;
}
}
没有实现String到Clob的转换。
分享到:
相关推荐
例如,如果你有一个`User`类,一个对应的XML结构,以及一个映射文件,你可以通过以下方式使用Castor: ```java import org.exolab.castor.xml.MarshalException; import org.exolab.castor.xml.Marshaller; import ...
提供处理XML、Directory、XADirectory的类库,提供从XML到JAVA类的转换机制。Castor(http://castor.exolab..org/)是一种将Java对象和XML自动绑定的开源软件。它可以在Java对象、XML文本、SQL数据表以及LDAP目录...
在使用Castor之前,通常需要创建一个映射文件(`.xml`格式),它定义了Java类和XML元素之间的对应关系。例如,假设有一个简单的`Person`类: ```java public class Person { private String name; private int ...
通过Mapping文件,开发者可以控制Java对象到XML的转换细节,如字段名的映射、类型转换和嵌套结构的处理。此外,Castor还支持JDBC数据源到XML的转换,以及对JDO(Java Data Objects)的支持。 **二、Java对象转换为...
Castor通过其内部的API,可以方便地读取XML文件并将其内容映射到Java对象上,同时也可以将Java对象的状态转换为XML格式的文件。这个过程包括了以下几个关键步骤: 1. **XML到Java对象的映射(XML to Java Mapping)...
1. **XML到Java对象绑定**:Castor通过XML Schema或者XML文件定义的映射关系,可以自动将XML数据解析为Java对象。这使得开发者无需手动编写繁琐的解析代码,提高了开发效率。 2. **Java对象到XML序列化**:反之,...
5. 在Java代码中使用Castor库,根据映射文件将XML数据反序列化为Java对象,或者将Java对象序列化为XML数据。 6. 编写并运行测试用例,确保数据转换的正确性。 总之,"castor插件java对象和XML自动绑定mapping文件...
Castor是一个Java库,它提供了一种方便的方式来映射XML数据到Java对象,反之亦然。这个工具在处理XML文档时特别有用,因为它允许开发者通过简单的对象操作来处理复杂的XML结构,而无需直接处理XML语法。本文将深入...
在XML到Java对象的映射过程中,Castor使用了DTD(Document Type Definition)和XSD(XML Schema Definition)来定义映射规范。`mapping.dtd`和`mapping.xsd`文件就是映射文件,它们分别代表了基于DTD和XSD的映射规则...
JavaBean到XML映射文件工具是一种实用程序,它允许开发者将Java对象(即JavaBean)的数据转换成XML格式的文件,反之亦然。这个工具在处理数据交换、持久化或配置文件时非常有用,特别是在使用像Castor这样的框架时。...
- `castor-1.3.2.dtd`或`castor.xsd`:这些是映射文件的DTD(文档类型定义)或XML Schema,定义了映射文件的结构。 - `README`或`README.txt`:包含有关如何使用和配置Castor的信息。 - `LICENSE`或`NOTICE`:关于...
这个“castor-1.3.1-examples.zip”文件包含了一些示例,展示了如何使用Castor进行XML到Bean以及Bean到XML的转换。这个过程在处理XML数据时非常有用,尤其是在数据交换、序列化和持久化场景中。 1. XML到Bean转换:...
2. **映射机制**:Castor使用XML映射文件来定义Java类和XML元素之间的对应关系。通过这种方式,开发者可以自定义对象到XML的转换规则,比如字段名的映射、复杂类型的处理等。 3. **支持多种数据类型**:Castor支持...
1. **XML映射文件**(*.xml):定义了Java类和XML元素的映射规则,是使用Castor的关键配置文件。 2. **Java源代码**(*.java):包含示例的Java类,可能有实体类和主程序,用于演示如何使用Castor进行序列化和反序列...
- 安装和配置Castor:首先,需要下载并添加Castor的JAR文件到项目类路径中。 - 创建XSD文件:定义XML数据的结构和约束。 - 使用Castor工具:运行Castor的`generate`命令,指定XSD文件的位置,它会自动生成相应的...
是个不错的XML解析工具。 1、xml格式文件的用法,我们学过的xml有两种用法:一,作为配置文件。二、作为数据存储文件。...2、这个工具的功能:能够把xml文件存储的数据和pojo对象进行映射。我们暂且把这种叫做:OXM。
Castor,全称为Java Content Repository (JCR) API的实现之一,它是一个强大的Java对象到XML数据绑定库,常用于将Java对象序列化为XML,或者反序列化XML到Java对象。在处理XML数据时,根节点是XML文档中至关重要的...
2. **映射文件**:映射文件是Castor的核心,它指定了XML元素如何映射到Java类的属性。例如,XML节点可以映射到类的字段,而XML属性可以映射到类的getter和setter方法。映射文件可以通过XML Schema(XSD)或者直接...
Castor是ExoLab Group下面的一个开放源代码的项目,它主要实现的是O/R映射功能。它主要API和数据接口为:JDO-like, SQL, OQL, JDBC, LDAP, XML, DSML。它支持分布式目录事务处理和时间;提供处理XML、Directory、...
Java工具如JAXB和XML Beans可以直接使用XSD文件生成Java类,从而实现对象到XML的严格映射。 总之,XML与Java对象的映射是Java开发中的重要环节,涉及多种技术和工具。开发者可以根据项目需求选择合适的工具,如JAXB...