Search code examples
javaxmlxstream

XStream : node with attributes and text node?


I would like to serialize an object to an XML of this form with XStream.

<node att="value">text</node>

The value of the node (text) is a field on the serialized object, as well as the att attribute. Is this possible without writing a converter for this object?

Thanks!


Solution

  • write a convertor, it should be something similar to the code snippet

    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());     
        }
    }
    

    And while using XStream,register the convertor

    final XStream stream = new XStream(new DomDriver());
    stream.registerConverter(new FieldDtoConvertor());