Castor XML映射和java.util.Map

Castor XML映射和java.util.Map,java,xml,binding,castor,Java,Xml,Binding,Castor,在过去的几天里,我一直在尝试以可读的方式在Java程序和XML之间进行一些序列化。尽管Castor有一些缺点,但它通过反射自动生成xml的功能非常强大。不幸的是,有一件事情似乎被完全排除在示例之外,那就是处理泛型。反射API似乎做得很好,但由于它只是因为方法以get\uuuuuuuuuux0()开头而无意中捕获了大量冗余数据,所以我想编写自己的映射文件来避免这种情况 首先,在“字段”元素的属性中,应该定义“类型”。但是,它没有指定如果此类型是抽象的或只是一个接口,应该执行什么操作。那么我应该把什

在过去的几天里,我一直在尝试以可读的方式在Java程序和XML之间进行一些序列化。尽管Castor有一些缺点,但它通过反射自动生成xml的功能非常强大。不幸的是,有一件事情似乎被完全排除在示例之外,那就是处理泛型。反射API似乎做得很好,但由于它只是因为方法以
get\uuuuuuuuuux0()
开头而无意中捕获了大量冗余数据,所以我想编写自己的映射文件来避免这种情况

首先,在“
字段
”元素的属性中,应该定义“
类型
”。但是,它没有指定如果此类型是抽象的或只是一个接口,应该执行什么操作。那么我应该把什么作为类型呢

其次,Castor中指定的大多数“collection”类型对象(
List
Vector
collection
Set
等)只需要一个泛型类型,因此指定“
type
”作为内部内容和“
collection=“true”
”就足够了。但是,它没有指定在像
地图这样的集合(其中需要两种类型)的情况下应该做什么。如何同时指定键类型和值类型


任何帮助都将不胜感激

关于我的第二个问题:

在使用映射或表指定某些内容时,需要在
字段中的
bind xml
元素中重新定义
org.exolab.castor.mapping.MapItem
。从



另外,从父
字段
元素中省略
类型
属性。

对于我的第一个问题,诀窍是不要在字段元素中指定类型,而是允许Castor自己推断它。如果您有可能出现在那里的类的定义,那么它将自动使用这些定义。例如:

<class name="some.example.Clazz">
    <!-- can contain condition1 or condition2 elements -->
    <field name="condition" collection="arraylist" required="true">
        <bind-xml name="condition" node="element" />
    </field>
</class>  

<class name="some.example.condition1">
    <field name="oneField" >
        <xml-bind name="fieldOne" />
    </field>
</class>

<class name="some.example.condition2">
    <field name="anotherField />
        <xml-bind name="fieldTwo" />
    </field>
</class>

<class name="some.example.Clazz">
    <!-- can contain condition1 or condition2 elements -->
    <field name="condition" collection="arraylist" required="true">
        <bind-xml name="condition" node="element" />
    </field>
</class>  

<class name="some.example.condition1">
    <field name="oneField" >
        <xml-bind name="fieldOne" />
    </field>
</class>

<class name="some.example.condition2">
    <field name="anotherField />
        <xml-bind name="fieldTwo" />
    </field>
</class>