Olá pessoal, boa tarde.
Uso o XStream em alguns projetos, mas agora estou encontrando uma certa dificuldade.
Preciso converter uma hierarquia de objetos para uma determinada estrutura XML, sendo que esse XML contém tags do tipo:
<foo>
<string language="pt">conteúdo... conteúdo... conteúdo...</string>
</foo>
Para isso, fiz o seguinte:
xstream.useAttributeFor( CharacterString.class, "language" );
xstream.registerConverter( new ConversorCharacterString() );
Sendo que a classe CharacterString gera a tag string e o campo language vira um atributo na tag. Para resolver o conteúdo, criei um conversor para CharacterString, que pega o conteúdo de um dos campos da classe e coloca como o corpo da tag string.
O problema é se as duas linhas acima são usadas juntas, o XStream só entende que quero colocar o conteúdo no corpo da tag string, não reconhecendo o atributo language.
Entenderam o que eu preciso? Gerar uma tag tanto com atributo quanto conteúdo.
Não estou conseguindo fazer isso, já olhei os tutoriais no site da XStream e ainda não consegui resolver.
Se alguém puder me ajudar, eu agradeço.
Seguem as listagens completas:
public class Foo {
private CharacterString string;
// gets e sets...
}
public class CharacterString {
private String language;
private String value;
public CharacterString() {}
public CharacterString( String value ) {
setValue( value );
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
public class ConversorCharacterString implements SingleValueConverter {
@Override
public String toString( Object obj ) {
return ( ( CharacterString ) obj ).getValue();
}
@Override
public Object fromString( String value ) {
return new CharacterString( value );
}
@Override
public boolean canConvert( Class type ) {
return type.equals( CharacterString.class );
}
}
Muito obrigado.
[]´s
