leer extraer escribir datos archivo java xml xstream

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");