我正在使用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封送处理对象时,它将:
-使用映射信息(如果有的话)来查找要创建的元素的名称
或
-默认情况下,使用类的名称创建一个名称
然后它将使用映射文件中的字段信息来确定如何将对象的给定属性转换为以下属性中的一个:
-属性
-元素
-文本内容
什么都没有,因为我们可以选择忽略特定字段
但是,我如何放置annotation@IgnoreFields或类似的东西?我知道,可以创建映射文件来指定要转换的字段。
Castor默认情况下会忽略映射文件中未指定的字段。
示例:(给定一个对象和如下映射)
对象包含2个字段,而映射文件仅为字段的1指定映射。
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>