使用Castor进行单值类

时间:2010-09-23 15:36:29

标签: xml xml-serialization castor

我有一些像这样设置的XML

<project>
    <client>Some client</client>
    <description>some description</description>
</project>

我需要将这些数据解组为的对象是Project和Client。如何为此设置我的脚轮映射?

<class name="Project">
  <field name="description" type="string" />
  <field name="client" type="Client" />
</class>

如果我使用上面的内容,并且我有一个带字符串的构造函数,我是否还需要为Client类进行映射 - 如果是这样,那需要看起来像什么?

1 个答案:

答案 0 :(得分:0)

Castor默认情况下很可能 - 使用内省来获取带有getter / setter方法的字段列表,并根据类和成员名称生成XML标记,将完成您想要的大部分操作。但是你会发现你最终可能需要调整它以确保输出中标签的顺序和精确的格式化。

您需要添加的重要项目是map-to每个类的XML定义(允许每个XML节点解组到正确的类)和每个字段的bind-xml个节点,以允许要映射到正确位置的字段。您将对client字段进行一项额外更改 - 您会注意到客户端的传入数据中的字段值不是client节点的子节点,而是作为子节点的子节点project节点。您可以通过指定container="true"来执行此操作,这意味着不会映射类,只显示其字段。

(未经测试)这样的事情,假设您拥有的客户端字符串进入名为name的字段。

<class name="Project">
 <map-to xml="project"/>
 <field name="client" type="Client" container="true"/>
 <field name="description" type="string"><bind-xml name="description"/></field>
</class>
<class name="Client">
 <field name="name" type="string"><bind-xml name="client"/></field>
</class>