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