java - extraer - XStream: nodo con atributos y nodo de texto?
leer archivo xml java netbeans (4)
escribe un convertidor, debe ser algo similar al fragmento de código
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());
}
}
Y mientras usa XStream, registre el convertidor
final XStream stream = new XStream(new DomDriver());
stream.registerConverter(new FieldDtoConvertor());
Me gustaría serializar un objeto a un XML de este formulario con XStream.
<node att="value">text</node>
El valor del nodo ( texto ) es un campo en el objeto serializado, así como el atributo att . ¿Es esto posible sin escribir un convertidor para este objeto?
¡Gracias!
Esto es mucho más fácil en JAXB
@XmlRootElement
public class Node {
@XmlAttribute
String att;
@XmlValue
String value;
}
puedes usar un Convertidor predefinido.
@XStreamAlias("node")
@XStreamConverter(value=ToAttributedValueConverter.class, strings={"text"})
class Node {
private String att;
private String text;
}
El tutorial de anotaciones XStream también dice que para el atributo att :
Tenga en cuenta que no se necesitan anotaciones de XStreamAsAttribute. El convertidor lo supone implícitamente.
Solo otra forma de hacerlo:
@XStreamAlias("My")
private static class My {
private String field;
}
XStream xStream = new XStream();
xStream.autodetectAnnotations(true);
xStream.useAttributeFor(My.class, "field");