XStream : node with attributes and text node?

后端 未结 4 781
难免孤独
难免孤独 2020-12-09 03:59

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

text

The value of the node

相关标签:
4条回答
  • 2020-12-09 04:34

    This is much easier in JAXB

    @XmlRootElement
    public class Node {
    
        @XmlAttribute
        String att;
    
        @XmlValue
        String value;    
    
    }
    
    0 讨论(0)
  • 2020-12-09 04:34

    Just another way of doing it:

       @XStreamAlias("My")
       private static class My {
          private String field;
       }
    
       XStream xStream = new XStream();
       xStream.autodetectAnnotations(true);
       xStream.useAttributeFor(My.class, "field");
    
    0 讨论(0)
  • 2020-12-09 04:41

    you can use a predefined Converter.

    @XStreamAlias("node")
    @XStreamConverter(value=ToAttributedValueConverter.class, strings={"text"})
    class Node {
      private String att;
      private String text;
    }   
    

    XStream Annotations Tutorial also says that for att attribute:

    Note, that no XStreamAsAttribute annotations were necessary. The converter assumes it implicitly.

    0 讨论(0)
  • 2020-12-09 04:48

    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());
    
    0 讨论(0)
提交回复
热议问题