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

Hri*_*shi 5 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>
Run Code Online (Sandbox Code Playgroud)

如果我不想要<PARAM>具有特定字段的字段, 我该怎么办<NAME>

Iva*_*lik 1

虽然我确实不认为 Xstream 真正适合这项任务,但它似乎确实是可能的。

您可以实现您自己的转换器,类似于其中之一。如果您看一下Converter界面,您会发现您可以通过不向 .txt 文件写入任何内容来轻松跳过某个元素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.
    }   
}
Run Code Online (Sandbox Code Playgroud)

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

有关更多信息,请阅读有关转换器的教程