[英]How to ignore a field in castor marshalling
我正在使用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或类似的东西呢? 我知道,可以创建映射文件以指定要转换的字段。
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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.