Xml com Xstream[RESOLVIDO]

5 respostas
Viniciustelles
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>[telefone removido]</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.
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);
    }
}

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

e minha classe de Beneficiario
@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

5 Respostas

A

cara,

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

t+

Viniciustelles
Obrigado pela dica, mas você diz em fazer algo assim na classe Beneficiario
@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;
A

não, fazer isso

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

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

A

precisa nao, agora coloca esse post como resolvido

t+

Criado 27 de agosto de 2012
Ultima resposta 27 de ago. de 2012
Respostas 5
Participantes 2