【问题标题】:How to ignore a field in castor marshalling如何忽略脚轮编组中的字段
【发布时间】:2014-01-14 15:33:03
【问题描述】:

我正在使用 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 或类似的东西吗? 我知道,可以创建映射文件来指定要转换的字段。

【问题讨论】:

    标签: java marshalling castor


    【解决方案1】:

    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>
    

    【讨论】:

    • 谢谢,但我不想使用映射文件,因为我有很多子类。最后,如果您在 XML 文件中设置关键字瞬态字段可能会被编组器忽略。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 2021-10-16
    • 2020-11-19
    • 1970-01-01
    • 2020-07-30
    相关资源
    最近更新 更多