我想使用XStream将对象序列化为此表单的XML.
<node att="value">text</node>
Run Code Online (Sandbox Code Playgroud)
节点(文本)的值是序列化对象上的字段,以及att属性.如果没有为此对象编写转换器,这可能吗?
谢谢!
man*_*rid 17
您可以使用预定义的转换器.
@XStreamAlias("node")
@XStreamConverter(value=ToAttributedValueConverter.class, strings={"text"})
class Node {
private String att;
private String text;
}
Run Code Online (Sandbox Code Playgroud)
对于att属性,XStream Annotations Tutorial也说了:
请注意,不需要XStreamAsAttribute注释.转换器隐含地假定它.
写一个转换器,它应该类似于代码片段
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());
}
}
Run Code Online (Sandbox Code Playgroud)
在使用XStream时,注册转换器
final XStream stream = new XStream(new DomDriver());
stream.registerConverter(new FieldDtoConvertor());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13132 次 |
| 最近记录: |