XStream自定义Converter笔记

本文详细介绍了如何使用XStream进行XML与Java对象之间的转换,包括基本用法、自定义转换器的注册以及如何处理集合类型的转换。通过示例展示了自定义Converter的优先级设置和操作集合的方法。

1.基本用法参考

https://blog.youkuaiyun.com/misakic52/article/details/42919123

2.注册自定义的转换器可指定优先级

XStream stream = new XStream();
//此处的优先级记得必须小于XStream.PROPRITY_VERY_HIGH,xstream自己的NullConverter是最高优先级
stream.registerConverter(new MyConverter(), XStream.PROPRITY_VERY_HIGH - 1);

3.操作集合的转换器

操作集合类可集成AbstractCollectionConverter,构造方法中的Mapper可通过new XStream()的getMapper获得

XStream stream = new XStream();
stream.registerConverter(new MyCollectionConverter(stream.getMapper()));

public class MyCollectionConverter extends AbstractCollectionConverter {
	
	public MyCollectionConverter (Mapper mapper){
		super(mapper);
	}

	@Override
	public boolean canConvert(Class type){
		return Collection.class.isAssignableFrom(type);
	}
	@Override
	public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context){
		Collection collection = (Collection) source;
		//只取集合的前10个转换
		int maxCount = 10;
		for(Iterator iterator = collection.iterator(); iterator.hasNext();){
			Object item = iterator.next();
			writeItem(item, context, writer);//此方法可详细参考
			if(--maxCount <= 0){
				break;
			}
		}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值