Bom dia pessoal estou obtendo o seguinte erro quando vou gerar meu xml para objeto java, alguém pode me dar uma ajuda.
[code]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)
[/code]
Como podem ver ele me trás alguns dados do meu arquivo xml e outros retorna null.
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.
Minha classe de ler o xml esta assim preciso de ajuda para ler
[code] 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();
}
}[/code]
Debugui a classe o erro acontece quando saio do primeiro for do cabeçalho… :S
pode me ajudar???
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
Junho 5, 2012, 12:13pm
#5
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…
Por, favor, edite seu post e coloque resolvido!, já que resolvemos seu problema por mp.
Por, favor, edite seu post e coloque resolvido!, já que resolvemos seu problema por mp.