Xml com Xstream[RESOLVIDO]

Bom dia, estava com problemas para pegar os valores de dentro da primeira tag de beneficiario =>

<beneficiario cco="023396310926" situacao="ATIVO" dataAtualizacao="2010-08-07"> <identificacao> <cpf>00039107094</cpf> <nome>JONATHAN ROGERS DA ROSA</nome> <sexo>1</sexo> <dataNascimento>1981-06-15</dataNascimento> <nomeMae>ELISABETE MARIA DA ROSA</nomeMae> </identificacao> <endereco> <logradouro>RUA SANTO AUGUSTO</logradouro> <numero>00404</numero> <bairro>MEDIANEIRA</bairro> <codigoMunicipio>432120</codigoMunicipio> <cep>95600000</cep> <resideExterior>0</resideExterior> </endereco> <vinculo> <codigoBeneficiario>103378040009</codigoBeneficiario> <relacaoDependencia>1</relacaoDependencia> <dataContratacao>2010-07-01</dataContratacao> <numeroPlanoANS>432212006</numeroPlanoANS> <itensExcluidosCobertura>0</itensExcluidosCobertura> <cnpjEmpresaContratante>02016439000138</cnpjEmpresaContratante> </vinculo> </beneficiario>

então utilizei a interface converter do xstream e funcionou bem para pegar os valores da primeira tag, como cco, situacao e dataAtualizacao
mas quando vou pagar idetificacao, endereco e vinculo nao me retorna nada.

[code]public class ConversorBeneficiario implements Converter {

@Override
public void marshal(Object valor, HierarchicalStreamWriter escreve, MarshallingContext texto) {
    Beneficiario beneficiario = (Beneficiario) valor;
    escreve.addAttribute("cco", beneficiario.getCco());
    escreve.addAttribute("situacao", beneficiario.getSituacao());
    escreve.addAttribute("dataAtualizacao", beneficiario.getDataAtualizacao());

    //Identificacao

    //utilizar setValue() 
    escreve.setValue(beneficiario.getIdentificacao().getCpf());
    escreve.setValue(beneficiario.getIdentificacao().getNome());
    escreve.setValue(beneficiario.getIdentificacao().getSexo());
    escreve.setValue(beneficiario.getIdentificacao().getDataNascimento());
    escreve.setValue(beneficiario.getIdentificacao().getNomeMae());


    //Endereco
    escreve.setValue(beneficiario.getEndereco().getLogradouro());
    escreve.setValue(beneficiario.getEndereco().getNumero());
    escreve.setValue(beneficiario.getEndereco().getBairro());
    escreve.setValue(beneficiario.getEndereco().getCodigoMunicipio());
    escreve.setValue(beneficiario.getEndereco().getCep());
    escreve.setValue(beneficiario.getEndereco().getTipoEndereco());
    escreve.setValue(beneficiario.getEndereco().getResideExterior());
    escreve.setValue(beneficiario.getEndereco().getComplemento());
    escreve.setValue(beneficiario.getEndereco().getCodigoMunicipioResidencia());

    //Vinculo
    escreve.setValue(beneficiario.getVinculo().getCodigoBeneficiario());
    escreve.setValue(beneficiario.getVinculo().getRelacaoDependencia());
    escreve.setValue(beneficiario.getVinculo().getCcoBeneficiarioTitular());
    escreve.setValue(beneficiario.getVinculo().getDataContratacao());
    escreve.setValue(beneficiario.getVinculo().getNumeroPlanoANS());
    escreve.setValue(beneficiario.getVinculo().getCoberturaParcialTemporaria());
    escreve.setValue(beneficiario.getVinculo().getItensExcluidosCobertura());
    escreve.setValue(beneficiario.getVinculo().getCnpjEmpresaContratante());
    escreve.setValue(beneficiario.getVinculo().getDataCancelamento());
    escreve.setValue(beneficiario.getVinculo().getMotivoCancelamento());
    escreve.setValue(beneficiario.getVinculo().getDataReativacao());
    escreve.setValue(beneficiario.getVinculo().getNumeroPlanoOperadora());
}

@Override
public Object unmarshal(HierarchicalStreamReader ler, UnmarshallingContext texto) {
    Beneficiario beneficiario = new Beneficiario();
    Identificacao identificacao = new Identificacao();
    Endereco endereco = new Endereco();
    Vinculo vinculo = new Vinculo();

    beneficiario.setCco(ler.getAttribute("cco"));
    beneficiario.setSituacao(ler.getAttribute("situacao"));
    beneficiario.setDataAtualizacao(ler.getAttribute("dataAtualizacao"));


    //Identificacao

    identificacao.setCpf(ler.getValue());
    identificacao.setNome(ler.getValue());
    identificacao.setSexo(ler.getValue());
    identificacao.setDataNascimento(ler.getValue());
    identificacao.setNomeMae(ler.getValue());

    //Endereco
    endereco.setLogradouro(ler.getValue());
    endereco.setNumero(ler.getValue());
    endereco.setBairro(ler.getValue());
    endereco.setCodigoMunicipio(ler.getValue());
    endereco.setCep(ler.getValue());
    endereco.setTipoEndereco(ler.getValue());
    endereco.setResideExterior(ler.getValue());
    endereco.setComplemento(ler.getValue());
    endereco.setCodigoMunicipioResidencia(ler.getValue());

    //Vinculo
    vinculo.setCodigoBeneficiario(ler.getValue());
    vinculo.setRelacaoDependencia(ler.getValue());
    vinculo.setCcoBeneficiarioTitular(ler.getValue());
    vinculo.setDataContratacao(ler.getValue());
    vinculo.setNumeroPlanoANS(ler.getValue());
    vinculo.setCoberturaParcialTemporaria(ler.getValue());
    vinculo.setItensExcluidosCobertura(ler.getValue());
    vinculo.setCnpjEmpresaContratante(ler.getValue());
    vinculo.setDataCancelamento(ler.getValue());
    vinculo.setMotivoCancelamento(ler.getValue());
    vinculo.setDataReativacao(ler.getValue());
    vinculo.setNumeroPlanoOperadora(ler.getValue());


    beneficiario.setIdentificacao(identificacao);
    beneficiario.setEndereco(endereco);
    beneficiario.setVinculo(vinculo);
    return beneficiario;
}

@Override
public boolean canConvert(Class clazz) {
    return clazz.equals(Beneficiario.class);
}

}
[/code]

para melhor entendimento do código esta é minha classe de Beneficiario

e minha classe de Beneficiario

[code]@XStreamAlias(“beneficiario”)
public class Beneficiario {

private String cco;
private String situacao;
private String dataAtualizacao;
@XStreamAlias("identificacao")
private Identificacao identificacao;
@XStreamAlias("endereco")
private Endereco endereco;
@XStreamAlias("vinculo")
private Vinculo vinculo;
 //gettrs e settrs

[/code]

cara,

para pegar os atributos da classe beneficio para anotar os seus atributos com @XStreamAsAttribute

t+

Obrigado pela dica, mas você diz em fazer algo assim na classe Beneficiario

[code]@XStreamAlias(“beneficiario”)
public class Beneficiario {

private String cco;
private String situacao;
private String dataAtualizacao;
@XStreamAsAttribute
private Identificacao identificacao;
@XStreamAsAttribute
private Endereco endereco;
@XStreamAsAttribute
private Vinculo vinculo;

[/code]

não, fazer isso

@XStreamAlias("beneficiario")  
public class Beneficiario {  
    @XStreamAsAttribute
    private String cco;  
    @XStreamAsAttribute
    private String situacao; 
    @XStreamAsAttribute 
    private String dataAtualizacao;   

Obrigado pela ajuda.
Esta anotação funcionou bem, e nem vou precisar da classe ConversorBeneficiario.
Abraços att.

precisa nao, agora coloca esse post como resolvido

t+