Xstream如何在编组时避免具有特定值的字段

时间:2012-09-14 12:23:19

标签: java xml xstream

我想以下列格式创建一个xml

<parm-list>
<param>
<NAME>somename</NAME>
<VALUE>somevalue</VALUE>
</param>
<param>
<NAME>somename</NAME>
<VALUE>somevalue</VALUE>
</param>
<param>
<NAME>somename</NAME>
<VALUE>somevalue</VALUE>
</param>
<param>
<NAME>somename</NAME>
<VALUE>somevalue</VALUE>
</param>
</param-list>

如果我不想要其中包含特定<PARAM>的{​​{1}}字段,该怎么办?

1 个答案:

答案 0 :(得分:1)

虽然我真的不认为Xstream真的适合这项任务,但似乎有可能。

您可以实现类似于one of those的转换器。如果你看一下Converter界面,你会发现你可以通过不向HierarchicalStreamWriter写任何内容来轻松跳过元素。

public class ParamConverter implements Converter{

    boolean canConvert(Class type){
        return Param.class.equals(type);
    }

    public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context){
        Param param = (Param)source;
        if (NAME_TO_SKIP.equals(param.getName()){
            return;
        }
        // delegate to ReflectionConverter or something else appropriate.
    }   
}

要注册转换器,只需拨打xStram.registerConverter(new ParamConverter());

有关详细信息,请参阅转换器上的this tutorial