在用Apache Castor处理Object<-->XML转换过程中,发现使用对象中有一个属性是ArrayList,其中存放的是一组HashMap。
对象属性示例
private ArrayList<Map> result;
// getResult...
// setResult...
按使用习惯将Castor解析规则配置为
<class ...>
...
<field name="result" type="java.util.HashMap" collection="arraylist" >
<bind-xml name="result" node="element" />
</field>
</class>
发现产生出的XML文件中,HashMap并没有预期值;在网上也查到其他人碰到这类问题并当做BUG向Castor提交,但Castor并未响应处理。
琢磨了一下Castor的使用规则,发现ArrayList和HashMap在转换规则中通属于collection类型,collection中的type可以使各种自定义对象,但不能仍然是collection。
解决办法,通过添加自定义对象包装HashMap,然后ArrayList中放自定义对象,问题解决
对象属性修改为
private ArrayList<Bean> result;
// getResult...
// setResult...
自定义对象
class Bean {
private HashMap map = new HashMap();
// setMap...
// getMap...
}
转换规则配置方法
<class ...>
...
<field name="result" type="custom.Bean" collection="arraylist" >
<bind-xml name="result" node="element" />
</field>
</class>
<class name="custom.Bean">
<map-to xml="Bean" />
<field name="map" collection="map" >
<bind-xml name="map" node="element" />
</field>
</class>
分享到:
相关推荐
3. **使用Castor Mapping**:在Castor中,你需要通过XML映射文件(通常是`.xml`扩展名)来指定Java类和XML元素之间的对应关系。在这个映射文件中,定义根节点与Java顶级类的对应,并为其他类和元素设定映射规则。 4...
在Java开发中,数据转换是常见的操作,"castor转map"这个话题涉及到的是使用Castor库将对象转换成Map数据结构的过程。Castor是一个强大的Java到XML绑定框架,它允许开发者将Java对象序列化为XML,同时也支持将XML反...
Castor支持复杂的数据结构,包括集合、数组和嵌套对象的映射。它还提供了处理XML Schema(XSD)的能力,可以自动生成Java类和映射文件。此外,Castor还提供了事件驱动的处理方式,允许在解析或序列化过程中进行干预...
7. **国际化与本地化**:Castor可以处理XML文档中的国际化信息,如使用不同的语言进行标签和属性的描述。 8. **API接口**:Castor提供了丰富的API接口,包括流式处理、DOM操作、SAX事件处理等,满足不同场景下的...
在本教程中,我们将深入探讨Castor的基本概念、安装、配置以及使用方法。 一、Castor简介 Castor的核心功能在于通过XML映射文件将Java类和数据库表之间的关系进行定义,这样Java对象就可以通过简单的对象操作来完成...
- **支持复杂的数据结构**:包括嵌套对象、数组、集合等。 - **映射文件**:允许用户自定义Java类和XML元素之间的映射关系。 ### 2. 安装与配置 首先,你需要在项目中添加Castor的依赖。如果你使用Maven,可以在`...
2. **处理复杂结构**:如果XML文档有复杂的嵌套结构,Castor能够自动处理这些关系,将XML节点转化为对应的Java对象,包括集合类、继承结构等。 **四、Castor的其他特性** 1. **类型转换**:Castor支持多种数据类型...
综上所述,Eclipse中的Castor插件是Java开发中实现数据绑定的强大工具,它简化了XML与Java对象之间的交互,提高了开发效率,尤其适合处理复杂的数据结构。通过学习和熟练掌握Castor,开发者能够在项目中更高效地管理...
在“Castor使用例子”中,这个小例子可能包含了多个场景,这些场景可能涵盖以下知识点: 1. **安装与配置**:首先,你需要将Castor库添加到你的项目构建路径中,通常是通过Maven或Gradle的依赖管理来完成。配置文件...
Castor还支持JDBC数据绑定,可以直接将数据库查询结果转换为Java对象集合,或者将Java对象持久化到数据库中。这种特性使得在Java应用程序中处理数据库操作更加便捷。 在"castor-0.9.9"目录下,我们可能会找到以下...
在XML Schema(XSD)广泛应用于定义XML数据结构的今天,Castor提供了一个方便的方法,将XSD文件自动转化为Java类,使得开发者能够更轻松地处理XML数据。以下是关于"Castor 1.4 xsd生成java"的相关知识点: 1. **...
文档的1.1.1节到1.1.6节涵盖了Castor XML的数据绑定框架的基本概念,例如框架的引入、使用现有类/对象进行映射、类描述符的使用以及XML上下文的创建方法。框架提供了将XML文档中的数据映射到Java对象和从Java对象...
3. **校验XML**:当使用Castor的`unmarshal()`方法解析XML时,如果启用了XSD校验,Castor会自动检查XML是否符合指定的XSD。如果XML不符合规范,Castor将抛出`MarshalException`。 4. **异常处理**:在代码中,需要...
这个"castor1.3 完整jar包"包含了Castor库的1.3rc1版本,便于开发者直接引入到项目中使用,无需单独下载和管理其依赖。 Castor的核心功能在于它的对象-XML绑定(Object-XML Binding)机制,它能够自动生成Java类到...
通过使用DTD,开发者可以指定哪些Java字段对应于XML文档中的哪些元素,以及如何处理嵌套的对象和数组。 2. **XSD映射**: XSD是XML Schema的缩写,比DTD提供了更强大的数据类型和验证功能。`mapping.xsd`文件则是...
org.castor.util.IdentityMap org.castor.util.IdentitySet org.exolab.javasource.JEnum org.exolab.javasource.JType org.exolab.castor.util.List org.exolab.javasource.Header org.exolab.javasource.JClass ...
Castor是Java社区中一个知名的开源项目,它提供了一个强大的数据绑定框架,使得XML文档与Java对象之间的转换变得更加简单和直观。"castor-1.2.zip" 是这个项目的某个版本,具体为1.2版的归档文件,通常包含了源代码...
这个"castor-1.3.2.zip"压缩包包含了Castor框架的1.3.2版本,它是一个流行的版本,提供了对Java对象到XML绑定的支持,这对于处理数据交换、序列化和持久化非常有用。在XML和Java之间进行转换可以极大地简化数据处理...
同时,它也可以处理复杂的数据结构,如嵌套对象和集合。 7. 性能优化:通过缓存机制,Castor可以提高数据访问的性能,减少不必要的数据库交互。 8. 集成友好:Castor可以轻松地集成到Spring框架或其他企业级应用中...
它支持复杂的数据结构,包括继承、集合和嵌套对象,同时提供了对JAXB标准的扩展。通过使用Castor,开发者可以在不牺牲性能和灵活性的情况下,轻松地处理XML数据与Java对象之间的转换。 标签中的“castor”指的是这...