我正在使用castor从java对象创建XML文件。 在创建XML文件时,我想忽略我班级中的一个字段。
文档http://castor.codehaus.org/reference/1.3.0/html/XML%20data%20binding.html说:
1.2.2.1。编组行为
对于Castor,Java类必须映射到XML元素。当Castor编组一个物体时,它将: - 使用映射信息(如果有)查找要创建的元素的名称 或
- 默认情况下,使用类的名称创建名称 然后,它将使用映射文件中的字段信息来确定如何将对象的给定属性转换为以下一个且仅为以下之一:
- 属性
- 元素
- 文字内容
- 没什么,因为我们可以选择忽略特定的字段
但是怎么样,我可以把注释@IgnoreFields或类似的东西? 我知道,可以创建映射文件来指定要转换的字段。
答案 0 :(得分:1)
Castor会忽略未在映射文件中指定的字段默认情况。
示例:(给定对象和映射如下)
映射文件时包含2个字段的对象仅指定仅字段的映射。
public class TestObj {
String param1;
String param2;
public String getParam1() {
return param1;
}
public void setParam1(String param1) {
this.param1 = param1;
}
public String getParam2() {
return param2;
}
public void setParam2(String param2) {
this.param2 = param2;
}}
映射文件(test-mapping.xml)
<mapping>
<class name="TestObj">
<map-to />
<field name="param1" type="java.lang.String">
<bind-xml name="param1" node="element" />
</field>
</class>
</mapping>
测试代码以打印xml
Marshaller marshaller = new Marshaller();
Mapping mapping = new Mapping();
mapping.loadMapping("test-mapping.xml");
marshaller.setMapping(mapping);
TestObj obj = new TestObj();
StringWriter writer = new StringWriter();
obj.setParam1("1");
obj.setParam2("2");
marshaller.setWriter(writer);
marshaller.marshal(obj);
System.out.println("output:"+writer.toString());
结束结果
<test-obj>
<param1>1</param1>
</test-obj>