首页 文章

如何忽略脚轮编组中的一个字段

提问于
浏览
2

我正在使用castor从java对象创建XML文件 . 我想在创建XML文件时忽略我 class 中的一个字段 .

文档http://castor.codehaus.org/reference/1.3.0/html/XML%20data%20binding.html说:

1.2.2.1 . 编组行为对于Castor,Java类必须映射到XML元素 . 当Castor封送一个对象时,它将: - 使用映射信息(如果有的话)来查找要创建的元素的名称,或者 - 默认情况下,使用类的名称创建一个名称然后它将使用来自映射文件以确定如何将对象的给定属性转换为以下一个且仅以下一个: - 属性 - 元素 - 文本内容 - 无,因为我们可以选择忽略特定字段

但是,如何,我可以把注释@IgnoreFields或类似的东西?我知道,可以创建映射文件来指定要转换的字段 .

1 回答

  • 1

    Castor忽略未在映射文件 by default 中指定的字段 .

    示例:(给定一个对象和映射如下)

    映射文件时包含2个字段的对象仅指定 1 of the field only 的映射 .

    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>
    

相关问题