[RESOLVIDO]Erro na construção de arquivo xml com Xstream

6 respostas
Viniciustelles

Bom dia pessoal estou obtendo o seguinte erro quando vou gerar meu xml para objeto java, alguém pode me dar uma ajuda.

run:
Versao Padrao: 2.02.01Identificacao: 




sequencialTransacao: nulltipoTransacao: nulldataRegistroTransacao: nullhoraRegistroTransacao: nullCNPJ: nullcnpjPagador: nullnull
Exception in thread "main" java.lang.ClassCastException: br.com.businessflex.model.PrestadorParaOperadora cannot be cast to br.com.businessflex.model.Cabecalho
	at br.com.businessflex.controller.DadosXML.imprimirDadosXML(DadosXML.java:90)
	at readxml.ReadXML.main(ReadXML.java:22)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)

Como podem ver ele me trás alguns dados do meu arquivo xml e outros retorna null.

6 Respostas

ribclauport

Exception in thread “main” java.lang.ClassCastException: br.com.businessflex.model.PrestadorParaOperadora cannot be cast to br.com.businessflex.model.Cabecalho

Bom, você não postou seu fonte, desta forma fica um pouco complicado saber onde você está errando, antes de tudo, veja o que o log está dizendo, ele diz que voce está tentando em algum momento colocar uma classe PrestadorParaOperadora dentro de uma Cabecalho, “cannot be casto to”, bom o seu “mapeamento” que Deus sabe como está, ja que você não postou nada, esta em algum momento não em conformidade com a hierarquia de classes…, de uma olhada nos pontos em que voce trabalha com Cabecalho e PrestadorParaOperadora,
Pergunta básica:
Você debugou o método

imprimirDadosXML(DadosXML.java:90)

Pois a exception está nesse metodo ao tentar fazer um casting, certo?

Espero ter ajudado.

Viniciustelles

Minha classe de ler o xml esta assim preciso de ajuda para ler

public void imprimirDadosXML() {


        try {
            XStream xStream = new XStream(new Dom4JDriver());
            xStream.alias("mensagemTISS", ArrayList.class);
            xStream.alias("cabecalho", ArrayList.class);
            xStream.processAnnotations(Cabecalho.class);
            xStream.alias("identificacaoTransacao", ArrayList.class);
            xStream.processAnnotations(IdentificacaoTransacao.class);
            xStream.alias("origem", ArrayList.class);
            xStream.processAnnotations(Origem.class);
            xStream.alias("codigoPrestadorNaOperadora", ArrayList.class);
            xStream.processAnnotations(CodigoPrestadorNaOperadora.class);
            xStream.alias("destino", ArrayList.class);
            xStream.processAnnotations(Destino.class);
            xStream.alias("prestadorParaOperadora", ArrayList.class);
            xStream.processAnnotations(PrestadorParaOperadora.class);
            xStream.alias("loteGuias", ArrayList.class);
            xStream.processAnnotations(LoteGuias.class);
            xStream.alias("guias", ArrayList.class);
            xStream.processAnnotations(Guias.class);
            xStream.alias("guiaFaturamento", ArrayList.class);
            xStream.processAnnotations(GuiaFaturamento.class);
            xStream.alias("guiaSP_SADT", ArrayList.class);
            xStream.processAnnotations(GuiaSP_SADT.class);
            xStream.alias("identificacaoGuiaSADTSP", ArrayList.class);
            xStream.processAnnotations(IdentificacaoGuiaSADTSP.class);
            xStream.alias("identificacaoFontePagadora", ArrayList.class);
            xStream.processAnnotations(IdentificacaoFontePagadora.class);
            xStream.alias("dadosBeneficiario", ArrayList.class);
            xStream.processAnnotations(DadosBeneficiario.class);
            xStream.alias("dadosSolicitante", ArrayList.class);
            xStream.processAnnotations(DadosSolicitante.class);
            xStream.alias("contratado", ArrayList.class);
            xStream.processAnnotations(Contratado.class);
            xStream.alias("identificacao", ArrayList.class);
            xStream.processAnnotations(Identificacao.class);
            xStream.alias("profissional", ArrayList.class);
            xStream.processAnnotations(Profissional.class);
            xStream.alias("conselhoProfissional", ArrayList.class);
            xStream.processAnnotations(ConselhoProfissional.class);
            xStream.alias("prestadorExecutante", ArrayList.class);
            xStream.processAnnotations(PrestadorExecutante.class);
            xStream.alias("profissionalExecutanteCompl", ArrayList.class);
            xStream.processAnnotations(ProfissionalExecutanteCompl.class);
            xStream.alias("diagnosticoAtendimento", ArrayList.class);
            xStream.processAnnotations(DiagnosticoAtendimento.class);
            xStream.alias("CID", ArrayList.class);
            xStream.processAnnotations(CID.class);
            xStream.alias("procedimentosRealizados", ArrayList.class);
            xStream.processAnnotations(ProcedimentosRealizados.class);
            xStream.alias("procedimentos", ArrayList.class);
            xStream.processAnnotations(Procedimentos.class);
            xStream.alias("procedimento", ArrayList.class);
            xStream.processAnnotations(Procedimento.class);
            xStream.alias("valorTotal", ArrayList.class);
            xStream.processAnnotations(ValorTotal.class);
            xStream.alias("epilogo", ArrayList.class);
            xStream.processAnnotations(Epilogo.class);





            BufferedReader input = new BufferedReader(new FileReader("c:\\file.xml"));
            ArrayList<Cabecalho> dadosCabecalho = (ArrayList) xStream.fromXML(input);
            input.close();

            for (Cabecalho registro : dadosCabecalho) {
                System.out.println("Versao Padrao: "+registro.getVersaoPadrao()
                        +"Identificacao: "+registro.getIdentificacaoTransacao()
                        +"sequencialTransacao: " + registro.getSequencialTransacao()
                        + "tipoTransacao: " + registro.getTipoTransacao()
                        + "dataRegistroTransacao: " + registro.getDataRegistroTransacao()
                        + "horaRegistroTransacao: " + registro.getHoraRegistroTransacao()
                        + "CNPJ: " + registro.getCNPJ()
                        + "cnpjPagador: " + registro.getCnpjPagador()
                        +""+registro.getCodigoPrestadorNaOperadora());
            }

            ArrayList<IdentificacaoTransacao> dadosIdentificacaoTransacao = (ArrayList) xStream.fromXML(input);
            input.close();

            for (IdentificacaoTransacao registro : dadosIdentificacaoTransacao) {
                System.out.println("tipoTransacao: " + registro.getTipoTransacao()
                        + "sequencialTransacao: " + registro.getSequencialTransacao()
                        + "dataRegistroTransacao: " + registro.getDataRegistroTransacao()
                        + "horaRegistroTransacao: " + registro.getHoraRegistroTransacao());
            }

            ArrayList<Origem> dadosOrigem = (ArrayList) xStream.fromXML(input);
            input.close();

            for (Origem registro : dadosOrigem) {
                System.out.println("CNPJ: " + registro.getCNPJ()
                        +"Codigo prestador na operadora: "+registro.getCodigoPrestadorNaOperadora());
            }

            ArrayList<CodigoPrestadorNaOperadora> dadosPrestadorNaOperadora = (ArrayList) xStream.fromXML(input);
            input.close();

            for (CodigoPrestadorNaOperadora registro : dadosPrestadorNaOperadora) {
                System.out.println("CNPJ: " + registro.getCNPJ());
            }

            ArrayList<Destino> dadosDestino = (ArrayList) xStream.fromXML(input);
            input.close();

            for (Destino registro : dadosDestino) {
                System.out.println("CNPJ Pagador" + registro.getCnpjPagador());
            }

            ArrayList<PrestadorParaOperadora> dadosPresParaOperadora = (ArrayList) xStream.fromXML(input);
            input.close();

            for (PrestadorParaOperadora registro : dadosPresParaOperadora) {
                System.out.println("Numero do lote: " + registro.getNumeroLote());
            }

            ArrayList<LoteGuias> dadosLoteGuias = (ArrayList) xStream.fromXML(input);
            input.close();

            for (LoteGuias registro : dadosLoteGuias) {
                System.out.println("Numero do Lote: " + registro.getNumeroLote());
            }

            ArrayList<Guias> dadosGuias = (ArrayList) xStream.fromXML(input);
            input.close();

            for (Guias registro : dadosGuias) {
                System.out.println("Caracter do atendimento: " + registro.getCaraterAtendimento()
                        + "Data hora atendimento: " + registro.getDataHoraAtendimento()
                        + "Tipo atendimento" + registro.getTipoAtendimento()
                        + "Tipo saida: " + registro.getTipoSaida()
                        + "Observacao: " + registro.getObservacao());

            }

            ArrayList<GuiaFaturamento> dadosGuiaFaturamento = (ArrayList) xStream.fromXML(input);
            input.close();

            for (GuiaFaturamento registro : dadosGuiaFaturamento) {
                System.out.println(
                        "Caracter do atendimento: " + registro.getCaraterAtendimento()
                        + "Data hora atendimento: " + registro.getDataHoraAtendimento()
                        + "Tipo atendimento" + registro.getTipoAtendimento()
                        + "Tipo saida: " + registro.getTipoSaida()
                        + "Observacao: " + registro.getObservacao());
            }

            ArrayList<GuiaSP_SADT> dadosGuiaSP_SADT = (ArrayList) xStream.fromXML(input);
            input.close();

            for (GuiaSP_SADT registro : dadosGuiaSP_SADT) {
                System.out.println(
                        "Caracter do atendimento: " + registro.getCaraterAtendimento()
                        + "Data hora atendimento: " + registro.getDataHoraAtendimento()
                        + "Tipo atendimento" + registro.getTipoAtendimento()
                        + "Tipo saida: " + registro.getTipoSaida()
                        + "Observacao: " + registro.getObservacao());
            }

            ArrayList<IdentificacaoGuiaSADTSP> dadosidGuiaSADTSP = (ArrayList) xStream.fromXML(input);
            input.close();

            for (IdentificacaoGuiaSADTSP registro : dadosidGuiaSADTSP) {
                System.out.println(
                        "dataEmissaoGuia: " + registro.getDataEmissaoGuia()
                        + "numeroGuiaPrestador: " + registro.getNumeroGuiaPrestador()
                        + "numeroGuiaOperadora: " + registro.getNumeroGuiaOperadora());
            }

            ArrayList<IdentificacaoFontePagadora> dadosidFontePagadora = (ArrayList) xStream.fromXML(input);
            input.close();

            for (IdentificacaoFontePagadora registro : dadosidFontePagadora) {
                System.out.println("cnpjFontePagadora" + registro.getCnpjFontePagadora());
            }


            ArrayList<DadosBeneficiario> dadosBeneficiario = (ArrayList) xStream.fromXML(input);
            input.close();

            for (DadosBeneficiario registro : dadosBeneficiario) {
                System.out.println(
                        "Numero Carteira: " + registro.getNumeroCarteira()
                        + "Nome Beneficiario: " + registro.getNomeBeneficiario()
                        + "Nome Plano: " + registro.getNomePlano()
                        + "Validade Carteira: " + registro.getNumeroCarteira());
            }

            ArrayList<DadosSolicitante> dadosSolicitante = (ArrayList) xStream.fromXML(input);
            input.close();

            for (DadosSolicitante registro : dadosSolicitante) {
                System.out.println(
                        "Nome Contratante: " + registro.getNomeContratante()
                        + "Sigla Conselho: " + registro.getSiglaConselho()
                        + "Numero Conselho" + registro.getNumeroConselho()
                        + "uf Conselho: " + registro.getUfConselho());

            }


            ArrayList<Contratado> dadosContratado = (ArrayList) xStream.fromXML(input);
            input.close();

            for (Contratado registro : dadosContratado) {
                System.out.println("Nome Contratado: " + registro.getNomeContratado());

            }


            ArrayList<Identificacao> dadosIdentificacao = (ArrayList) xStream.fromXML(input);
            input.close();

            for (Identificacao registro : dadosIdentificacao) {
                System.out.println(
                        "CPF: " + registro.getCpf()
                        + "CNPJ: " + registro.getCNPJ());
            }


            ArrayList<Profissional> dadosProfissional = (ArrayList) xStream.fromXML(input);
            input.close();

            for (Profissional registro : dadosProfissional) {
                System.out.println(
                        "sigla Conselho: " + registro.getSiglaConselho()
                        + "Numero Conselho" + registro.getNumeroConselho()
                        + "ufConselho" + registro.getUfConselho());
            }

            ArrayList<ConselhoProfissional> dadosConselhoProfissional = (ArrayList) xStream.fromXML(input);
            input.close();

            for (ConselhoProfissional registro : dadosConselhoProfissional) {
                System.out.println("sigla Conselho: " + registro.getSiglaConselho()
                        + "numero Conselho: " + registro.getNumeroConselho()
                        + "ufConselho: " + registro.getUfConselho());

            }


            ArrayList<PrestadorExecutante> dadosPrestExecutantes = (ArrayList) xStream.fromXML(input);
            input.close();

            for (PrestadorExecutante registro : dadosPrestExecutantes) {
                System.out.println("nomeContratado: " + registro.getNomeContratado());
            }

            ArrayList<ProfissionalExecutanteCompl> dadosProfissionalExeCompl = (ArrayList) xStream.fromXML(input);
            input.close();

            for (ProfissionalExecutanteCompl registro : dadosProfissionalExeCompl) {
                System.out.println("nomeExecutante: " + registro.getNomeExecutante());
            }

            ArrayList<DiagnosticoAtendimento> dadosDiagnosticoAtendimento = (ArrayList) xStream.fromXML(input);
            input.close();


            for (DiagnosticoAtendimento registro : dadosDiagnosticoAtendimento) {

                System.out.println("Nome Tabela: " + registro.getNomeTabela()
                        + "Codigo Diagnostico: " + registro.getCodigoDiagnostico());

            }

            ArrayList<CID> dadosCID = (ArrayList) xStream.fromXML(input);
            input.close();

            for (CID registro : dadosCID) {
                System.out.println("Nome Tabela: " + registro.getNomeTabela()
                        + "Codigo diagnostico: " + registro.getCodigoDiagnostico());
            }

            ArrayList<ProcedimentosRealizados> dadosProcRealizados = (ArrayList) xStream.fromXML(input);
            input.close();

            for (ProcedimentosRealizados registro : dadosProcRealizados) {
                System.out.println("Data: " + registro.getData()
                        + "Quantidade Realizada: " + registro.getQuantidadeRealizada()
                        + "valor: " + registro.getValor()
                        + "Valor total: " + registro.getValorTotal());

            }

            ArrayList<Procedimentos> dadosProcedimentos = (ArrayList) xStream.fromXML(input);
            input.close();

            for (Procedimentos registro : dadosProcedimentos) {
                System.out.println("Data: " + registro.getData()
                        + "Quantidade Realizada: " + registro.getQuantidadeRealizada()
                        + "Valor: " + registro.getValor()
                        + "Valor Total: " + registro.getValorTotal());
            }

            ArrayList<Procedimento> dadosProcedimento = (ArrayList) xStream.fromXML(input);
            input.close();

            for (Procedimento registro : dadosProcedimento) {
                System.out.println("codigo: " + registro.getCodigo()
                        + "Tipo Tabela: " + registro.getTipoTabela()
                        + "Descricao: " + registro.getDescricao());
            }

            ArrayList<ValorTotal> dadosValorTotal = (ArrayList) xStream.fromXML(input);
            input.close();

            for (ValorTotal registro : dadosValorTotal) {
                System.out.println("servicos Executados: " + registro.getServicosExecutados()
                        + "taxas: " + registro.getTaxas()
                        + "materiais: " + registro.getMateriais()
                        + "medicamentos: " + registro.getMedicamentos()
                        + "Total Geral: " + registro.getTotalGeral());
            }


            ArrayList<Epilogo> dadosEpilogo = (ArrayList) xStream.fromXML(input);
            input.close();

            for (Epilogo registro : dadosEpilogo) {
                System.out.println("Hash: " + registro.getHash());
            }



        } catch (IOException e) {
            e.printStackTrace();

        }

    }

Debugui a classe o erro acontece quando saio do primeiro for do cabeçalho.. :S

pode me ajudar???

ribclauport

E ae?, conseguiu resolver?
Se não conseguiu, mande o xml por mp, e a fonte da classe cabecalho, bom, visto que seu codigo já esta bem extenso, eu faria da seguinte forma, pegaria somente a lista de cabecalhos, sem os outros detalhes, e faria uma interação, e irira decrementando depois a lógica… pois da forma que está tm muitos objetos envolvidos…

pmlm

Pergunta: porque é que estás a tentar ler o XML tanta vez? E porque é que para cada uma dizes que é uma lista de elementos diferentes? Claro que vai dar ClassCastException…

ribclauport

Por, favor, edite seu post e coloque resolvido!, já que resolvemos seu problema por mp.

ribclauport

Por, favor, edite seu post e coloque resolvido!, já que resolvemos seu problema por mp.

Criado 4 de junho de 2012
Ultima resposta 7 de jun. de 2012
Respostas 6
Participantes 3