XStream: узел с атрибутами и текстовый узел?

Я просто записал рекурсивную функцию, чтобы выяснить, должен ли класс был быть сериализирован с помощью DataContractSerializer. Большая проблема шла с шаблонами/дженериками, где класс мог содержать другие типы, которые должны были быть datacontract, сериализированным..., таким образом, это, проходят каждый тип, если это не datacontractserializable проверка, это - типы.

18
задан ChssPly76 13 November 2009 в 03:05
поделиться

2 ответа

напишите преобразователь, он должен быть чем-то похожим на фрагмент кода

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

И при использовании XStream зарегистрируйте преобразователь

final XStream stream = new XStream(new DomDriver());
stream.registerConverter(new FieldDtoConvertor());
7
ответ дан 30 November 2019 в 08:38
поделиться

Это намного проще в JAXB

@XmlRootElement
public class Node {

    @XmlAttribute
    String att;

    @XmlValue
    String value;    

}
0
ответ дан 30 November 2019 в 08:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: