XStream :具有属性和文本节点的节点?
我想使用XStream将对象序列化为这种形式的XML。
<node att="value">text</node>
节点(文本)的值是序列化对象上的字段,以及 att 属性。如果不为此对象编写转换器,这是否可能?
谢谢!
我想使用XStream将对象序列化为这种形式的XML。
<node att="value">text</node>
节点(文本)的值是序列化对象上的字段,以及 att 属性。如果不为此对象编写转换器,这是否可能?
谢谢!
您可以使用预定义的转换器。
@XStreamAlias("node")
@XStreamConverter(value=ToAttributedValueConverter.class, strings={"text"})
class Node {
private String att;
private String text;
}
XStream Annotations Tutorial 还说,对于 att 属性:
请注意,不需要 XStreamAs 属性注释。转换器隐式假定它。
编写转换器,它应该类似于代码片段
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());