我正在使用 XStream 将对象序列化为 XML 格式。我得到的格式化xml如下:node1,node2,node 3是pojo的属性,DetailDollars
我有一个要求,我必须计算一个百分比,例如 100/ 25 并将新节点添加到现有节点中。所以,最终的输出应该是:
<DetailDollars>
<node1>100 </node1>
<node2>25</node2>
<node3>10</node3>
</DetailDollars>
我编写了一个自定义转换器并注册到我的 xstream 对象。
public void marshal(..){
writer.startNode("node4");
writer.setValue(getNode1()/ getnode2() );
writer.endNode();
}
但是,我得到的 xml 流只有新节点:
<DetailDollars>
<node4>4</node4>
</DetailDollars>
我不确定哪个 xstream api 可以获得所需的格式。你能帮我解决这个问题吗?
这是您需要的转换器:
public class DetailDollarsConverter extends ReflectionConverter {
public DetailDollarsConverter(Mapper mapper,
ReflectionProvider reflectionProvider) {
super(mapper, reflectionProvider);
}
@Override
public void marshal(Object obj, HierarchicalStreamWriter writer,
MarshallingContext context) {
super.marshal(obj,writer,context);
DetailDollars dl = (DetailDollars) obj;
writer.startNode("node4");
writer.setValue(Double.toString(dl.getNode1() / dl.getNode2()));
writer.endNode();
}
@Override
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
return super.unmarshal(reader,context);
}
@SuppressWarnings("unchecked")
@Override
public boolean canConvert(Class clazz) {
return clazz.equals(DetailDollars.class);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)