XStream + atributo XML

5 respostas
vivi_grieco

Bom dia,
estou tentando utilizar o XStream, mas pelo o que eu andei lendo, ele não consegue “reconhecer” os atributos do XML.
por exemplo, eu tenho esse xml:

<usuario id="123">
       <nome>Viviane</nome>
       <fone>1234567</fone>
    </usuario>

eu preciso conseguir recuperar esse “id”. Como eu posso fazer isso?

5 Respostas

T

http://xstream.codehaus.org/alias-tutorial.html

O nome é “atributo”, não “parâmetro”.

vivi_grieco

valeu thingol, vou dar uma lida. Na pressa, acabei colocando parâmetro… rss… mas já me corrigi… :slight_smile:

T

O XStream não é fácil de usar com atributos. O objetivo principal do XStream é serializar objetos Java.

vivi_grieco

Pois é… eu tenho que serializar os objetos e pegar esse atributo p/ serializar no objeto também. Serializar eu já consegui beleza, agora falta esse atributo :frowning:

_fs

O ideal é não usar atributos. Se você pode alterar o xml, basta fazer:

<usuario>
    <id>123</id>
    <nome>Viviane</nome>
    <fone>1234567</fone>
</usuario>

Se você não pode alterar o XML terá que criar o ser converter. Leia aqui:
http://xstream.codehaus.org/converter-tutorial.html

No método unmarshal, que converte o XML em um objeto java mapeado você pode fazer o seguinte:

public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
    Usuario usuario = new Usuario();

    // tada
    usuario.setId(reader.getAttribute("id"));

    reader.moveDown();
    usuario.setNome(reader.getValue());
    reader.moveDown();
    usuario.setFone(reader.getValue());
    reader.moveUp();
    return usuario;
}

Provavelmente me confundi com os moveUp e moveDown, mas basta testar algumas vezes para fazer certo.

Criado 1 de novembro de 2006
Ultima resposta 1 de nov. de 2006
Respostas 5
Participantes 3