我想使用XStream将对象序列化为这种形式的XML。
<node att="value">text</node>
节点(文本)的值是序列化对象以及att属性上的字段。如果不为此对象编写转换器,是否有可能?
谢谢!
最佳答案
写一个转换器,应该类似于代码片段
class FieldDtoConvertor implements Converter {
@SuppressWarnings("unchecked")
public boolean canConvert(final Class clazz) {
return clazz.equals(FieldDto.class);
}
public void marshal(final Object value,
final HierarchicalStreamWriter writer,
final MarshallingContext context) {
final FieldDto fieldDto = (FieldDto) value;
writer.addAttribute(fieldDto.getAttributeName(), fieldDto.getAttributeValue());
}
}
在使用XStream时,注册转换器
final XStream stream = new XStream(new DomDriver());
stream.registerConverter(new FieldDtoConvertor());