由于项目需要和其他公司合作开发,所以需要XML来作为传输数据格式。
感觉DOM SAX JAXP 用起来过于复杂,就选择了Castor这个框架,在使用过程中碰到了一些问题记录一下。
1: Castor 和 Spring 整合
<bean id="resolver" class="org.castor.spring.xml.CastorResolverFactoryBean">
<property name="mappingLocations">
<list>
<value>mapping.xml</value>
</list>
</property>
</bean>
定义从xml 组装成 java 对象 bean
<bean id="unmarshaller" class="org.castor.spring.xml.CastorUnmarshallerFactoryBean">
<property name="resolver">
<ref local="resolver" />
</property>
</bean>
定义从java 对象 组装成 xml bean
<bean id="marshaller" class="org.castor.spring.xml.CastorMarshallerFactoryBean">
<property name="resolver">
<ref local="resolver" />
</property>
</bean>
代码调用
DATA data=new DATA();
data.setGatewayId(1L);
data.setNodeId(1L);
data.setTime(new Date());
data.setFRQ(2.00f);
StringWriter writer=new StringWriter();
marshaller.setWriter(writer);
marshaller.marshal(data) ;
2: 有一些特殊的字段比如时间格式 需要自定义 fileHandler
public class TimeHandlerImpl extends GeneralizedFieldHandler {
public final DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override
public Object convertUponGet(Object value) {
if(value==null)
return null;
Date date = (Date) value;
return format.format(date);
}
@Override
public Object convertUponSet(Object value) {
if(value==null)
return null;
String dateStr = (String) value;
try {
return format.parse(dateStr);
}
catch (ParseException e) {
throw new RuntimeException(e);
}
}
@Override
public Class getFieldType() {
return Date.class;
}
}
mapping.xml 当中定义时间格式字段
<field name="time" type="string" handler="xxxx.TimeHandlerImpl">
<bind-xml name="time" node="element" />
</field>
参考:1 http://www.castor.org/1.2/xml-mapping.html#Sample-1:-Defining-a-custom-field-handler
2 http://www.ibm.com/developerworks/cn/xml/x-bindcastor/
分享到:
相关推荐
Castor是一个开源的数据绑定框架,它允许Java开发者在Java对象和XML之间进行无缝转换。这个强大的工具能够将复杂的Java对象模型映射到XML文档,同时也能够将XML数据解析回等效的Java对象,极大地简化了Java应用中的...
本文将详细介绍Java XML绑定技术的基本概念,并重点介绍三种常用的实现框架:JAXB、XMLBeans和Castor。 #### 二、Java XML绑定技术概述 Java XML绑定技术(简称XML Binding)是一种能够自动将XML文档映射到Java...
1. **Castor框架**:Castor是一个强大的Java库,它允许开发人员通过简单的XML绑定来实现Java对象和XML之间的转换。它支持JAXB不涵盖的一些功能,比如存储过程调用、XML到Java对象的映射以及持久化机制。 2. **XML ...
Castor是一个开源的Java库,它提供了一个强大的框架,用于在Java对象和XML文档之间进行映射和转换。这个库的使用使得数据序列化和反序列化变得简单,尤其是在处理复杂的对象模型时。本文将深入探讨如何使用Castor在...
Castor是Java中一个强大的数据绑定框架,它允许开发者将XML文档与Java对象之间进行映射,从而实现XML数据的序列化和反序列化。在Java应用开发中,处理XML数据时,通常需要将XML文件内容转换为Java对象,或者将Java...
Castor框架是一个开源Java库,主要用于XML数据绑定和对象关系映射(ORM)。它提供了一种将XML文档转换为Java对象以及将Java对象序列化为XML的机制,从而简化了XML处理并促进了Java应用程序与XML数据之间的交互。下面...
Castor是一个强大的Java对象到XML绑定框架,它可以自动将Java对象转换为XML文档,反之亦然。以下是如何使用Castor进行JavaBean到XML转换的步骤: 1. **引入Castor依赖**:首先,你需要在项目中引入Castor库。如果是...
Castor是一种开源的数据绑定框架,它允许在Java对象和XML之间进行双向转换。这个框架的主要目的是简化数据交换,使得开发者可以轻松地将Java对象序列化为XML,或者将XML反序列化为Java对象。这对于处理XML数据,如...
Castor是一个强大的Java库,主要用于XML到对象绑定和对象到XML的数据转换。它提供了一种简单的方法来将复杂的XML文档映射为Java对象,并且能够反向操作,将Java对象序列化为XML格式。这个工具在处理XML数据时极大地...
8. **数据绑定框架**: 除了JAXB,还有其他的数据绑定框架,比如Castor, JiBX, XMLBeans等,它们提供了类似的XML到Java对象的映射功能,但可能具有不同的特性和使用方式。 9. **性能优化**: 在大量XML处理时,理解并...
5. **灵活的映射**:Castor提供了多种映射选项,比如一对一、一对多、多对一和多对多的关系映射,以及自定义转换函数,使开发者能够根据需求定制XML-Java转换。 6. **性能优化**:Castor通过缓存映射信息和利用内存...
Castor是一个强大的对象关系映射(ORM)和数据绑定框架,它可以将Java对象与数据库记录或XML文档之间建立映射关系。 JavaBean是Java编程中的一个概念,它是一种遵循特定设计模式的Java类,通常用来封装数据。...
总之,Castor框架是Java开发者处理XML数据的一个强大工具,它通过数据绑定简化了XML与Java对象之间的转换,减少了编程复杂性,提高了效率。对于那些主要关心XML数据内容而非其结构的项目,采用Castor进行数据绑定是...
XML映射文件是Castor数据绑定的基石,通过定义映射规则,它描述了如何将XML模式(schema)转换为Java类,或者反向操作。该节还介绍了映射文件的使用模式和xsi:type属性的用法,以及如何通过Location属性进行映射优化...
ORM允许开发人员将数据库中的记录映射到Java对象,而XML绑定则让Java对象和XML文档之间可以相互转换。这两个特性极大地简化了数据处理和交换的过程。 二、Castor API的核心功能 1. 对象-XML转换:Castor提供了便捷...
Castor是Java开发中的一款强大的数据绑定框架,它允许开发者在Java对象、XML文档、SQL数据库表以及LDAP目录之间进行无缝的数据转换。这个"castor1.3 完整jar包"包含了Castor库的1.3rc1版本,便于开发者直接引入到...
在这个示例中,我们可能使用了JAXB(Java Architecture for XML Binding)框架,它是Java SE的一部分,用于自动将Java对象绑定到XML,以及将XML反序列化回Java对象。 1. **XML到Java对象的转化**:使用JAXB,首先...
Castor是一个Java库,它允许开发人员将XML文档和Java对象之间进行映射,从而实现数据的序列化和反序列化。这种功能对于数据交换、持久化或配置管理等场景非常有用。在本篇博文中,我们可能讨论的是如何自定义这些...
Castor是一个开源的数据绑定框架,主要用于Java对象与XML之间的映射和转换。它提供了一种简单的方法来将Java对象序列化为XML文档,同时也可以从XML数据中反序列化为等效的Java对象。在标题中提到的"castor-0.9.9.1....