我想使用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());

10-08 15:41