ParserXML

5 respostas
J

Ola galera, preciso da ajuda de vc´s, estou gerando um arquivo xml, por linguagem c, este recebe o argumento de java e depois tento receber os dados gerados por c, lendo um arquivo xml, so ta dando erro, por favor me ajudem a identifica-lo

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.File;
import java.io.IOException;
import java.awt.*;
import javax.swing.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;

public class ConsultaCliente extends JFrame implements WindowListener, ActionListener {

    JPanel Painel, Painel2;
    JLabel CPF, nome, Nascimento, rg, rua, bairro, numero, complemento,cidade, cep, uf, tel, cel, email, limite, obs;
    JTextField rCPF, rnome, rCodigo, rrua, rbairro, rcomplemento, rcidade, remail, ruf, rnumero,rlimite, rcpf, rcep, rdataNascimento, rtel, rcel, rrg, robs;
    JButton Consultar, Limpar, Voltar;
    Principal principal;
    File arquivoDisco;
    public static String ocpf;
    String recebeuxml, cnome, cbairro, ccidade, cobs, ccomplemento, crua, ccpf;
    ParserXMLconCPF parsercpf;

    public ConsultaCliente() throws SAXException, ParserConfigurationException {
        getContentPane().setLayout(null);
        setTitle("Comercio ID");
        setBackground(Color.WHITE);
        setBounds(500, 0, 300, 120);
        setResizable(false);
        setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

        Painel = new JPanel();
        Painel.setLayout(null);
        Painel.setBackground(Color.WHITE);
        Painel.setBounds(0, 0, 300, 100);

        Painel2 = new JPanel();
        Painel2.setLayout(null);
        Painel2.setBackground(Color.WHITE);
        Painel2.setBounds(0, 0, 300, 540);



        CPF = new JLabel("CPF: ");
        CPF.setBounds(0, 30, 200, 25);
        rCPF = new JTextField();
        rCPF.setBackground(Color.white);
        rCPF.setForeground(Color.black);
        rCPF.setBounds(40, 30, 250, 25);

        nome = new JLabel("Nome: ");
        nome.setBounds(0, 60, 200, 25);
        rnome = new JTextField();
        rnome.setBackground(Color.white);
        rnome.setForeground(Color.black);
        rnome.setBounds(40, 60, 250, 25);

        Nascimento = new JLabel("Data de Nasc.: ");
        Nascimento.setBounds(0, 90, 200, 25);
        rdataNascimento = new JTextField();
        rdataNascimento.setBackground(Color.white);
        rdataNascimento.setForeground(Color.black);
        rdataNascimento.setBounds(40, 90, 250, 25);

        rg = new JLabel("CPF: ");
        rg.setBounds(0, 30, 200, 25);
        rrg = new JTextField();
        rrg.setBackground(Color.white);
        rrg.setForeground(Color.black);
        rrg.setBounds(40, 30, 250, 25);

        cep = new JLabel("CEP: ");
        cep.setBounds(0,180,200,25);
        rcep = new JFormattedTextField();
        rcep.setBackground(Color.white);
	rcep.setForeground(Color.black);
	rcep.setBounds(45,180,255,25);

        rua = new JLabel("Rua: ");
        rua.setBounds(0,210,200,25);
        rrua = new JTextField();
        rrua.setBackground(Color.white);
	rrua.setForeground(Color.black);
	rrua.setBounds(45,210,255,25);

        bairro = new JLabel("Bairro: ");
        bairro.setBounds(0,240,200,25);
        rbairro = new JTextField();
        rbairro.setBackground(Color.white);
	rbairro.setForeground(Color.black);
	rbairro.setBounds(45,240,255,25);

        complemento = new JLabel("Complemento: ");
        complemento.setBounds(0,270,200,25);
        rcomplemento = new JTextField();
        rcomplemento.setBackground(Color.white);
	rcomplemento.setForeground(Color.black);
	rcomplemento.setBounds(85,270,215,25);

        numero = new JLabel("Numero: ");
        numero.setBounds(0,300,200,25);
        rnumero = new JTextField();
        rnumero.setBackground(Color.white);
	rnumero.setForeground(Color.black);
	rnumero.setBounds(50,300,255,25);

        cidade = new JLabel("Cidade: ");
        cidade.setBounds(0,330,200,25);
        rcidade = new JTextField();
        rcidade.setBackground(Color.white);
	rcidade.setForeground(Color.black);
	rcidade.setBounds(45,330,255,25);

        uf = new JLabel("UF: ");
        uf.setBounds(0,360,200,25);
        ruf = new JTextField();
        ruf.setBackground(Color.white);
	ruf.setForeground(Color.black);
	ruf.setBounds(45,360,255,25);
     
        tel = new JLabel("TEL: ");
        tel.setBounds(0,390,200,25);
        rtel = new JTextField();
        rtel.setBackground(Color.white);
	rtel.setForeground(Color.black);
	rtel.setBounds(45,390,255,25);
        
        cel = new JLabel("CEL: ");
        cel.setBounds(0,420,200,25);
        rcel = new JTextField();
        rcel.setBackground(Color.white);
	rcel.setForeground(Color.black);
	rcel.setBounds(45,420,255,25);

        email = new JLabel("EMAIL: ");
        email.setBounds(0,450,200,25);
        remail = new JTextField();
        remail.setBackground(Color.white);
	remail.setForeground(Color.black);
	remail.setBounds(45,450,255,25);

        limite = new JLabel("LIMITE: ");
        limite.setBounds(0,480,200,25);
        rlimite = new JTextField();
        rlimite.setBackground(Color.white);
	rlimite.setForeground(Color.black);
	rlimite.setBounds(45,480,255,25);

        obs = new JLabel("OBS: ");
        obs.setBounds(0,510,200,25);
        robs = new JTextField();
        robs.setBackground(Color.white);
	robs.setForeground(Color.black);
	robs.setBounds(45,510,255,25);


        Consultar = new JButton("Consultar");
        Consultar.setBounds(40, 65, 95, 25);
        Consultar.setForeground(Color.black);
        Consultar.addActionListener(this);

        Limpar = new JButton("Limpar");
        Limpar.setBounds(140, 65, 95, 25);
        Limpar.setForeground(Color.black);
        Limpar.addActionListener(this);

        Voltar = new JButton("Voltar");
        Voltar.setBounds(0, 0, 70, 25);
        Voltar.setForeground(Color.black);
        Voltar.addActionListener(this);

        Painel.add(Consultar);
        Painel.add(CPF);
        Painel.add(rCPF);
        Painel.add(Limpar);
        Painel.add(Voltar);
        getContentPane().add(Painel);
        super.addWindowListener(this);

    }

    public void windowOpened(WindowEvent e) {
    }

    public void windowClosing(WindowEvent e) {
    }

    public void windowClosed(WindowEvent e) {
        this.dispose();
        System.exit(0);
    }

    public void windowIconified(WindowEvent e) {
    }

    public void windowDeiconified(WindowEvent e) {
    }

    public void windowActivated(WindowEvent e) {
    }

    public void windowDeactivated(WindowEvent e) {
    }

    public void actionPerformed(ActionEvent e) {

        Object objetoRecebeuEvento;
        objetoRecebeuEvento = e.getSource();
        if (objetoRecebeuEvento == Limpar) {
            rCPF.setText(null);
        }
        if (objetoRecebeuEvento == Consultar)
        {
                
                try
                {
                    ccpf = rCPF.getText();
                    Runtime.getRuntime().exec("c:/temp/Consulta_cliente.exe "+ccpf);
                }catch (IOException ex){
                    Logger.getLogger(ConsultaCliente.class.getName()).log(Level.SEVERE, null, ex);
                }

               ocpf = rCPF.getText();

            try
            {
                Thread.sleep(5000);
                
                parsercpf = new ParserXMLconCPF("c:/temp/aprovado.xml");
            } 
            catch (Exception ex)
            {
                Logger.getLogger(JanelaConsultaCPF.class.getName()).log(Level.SEVERE, null, ex);
            }
                cnome =(ParserXMLconCPF.nome);
                cnome = cnome.replace("_"," ");
                System.out.println(cnome);
                rnome.setText(cnome);
                rcpf.setText(ParserXMLconCPF.cpf);
                rg.setText(ParserXMLconCPF.rg);
                rdataNascimento.setText(ParserXMLconCPF.nascimento);
                crua = (ParserXMLconCPF.rua);
                crua = crua.replace("_", " ");
                rrua.setText(crua);
                cbairro = (ParserXMLconCPF.bairro);
                cbairro = cbairro.replace("_"," ");
                rbairro.setText(cbairro);
                ccidade = ParserXMLconCPF.cidade;
                ccidade = ccidade.replace("_"," ");
                rcidade.setText(ccidade);
                rnumero.setText(ParserXMLconCPF.numero);
                ccomplemento = ParserXMLconCPF.complemento;
                ccomplemento = ccomplemento.replace("_"," ");
                rcomplemento.setText(ccomplemento);
                ruf.setText(ParserXMLconCPF.uf);
                rtel.setText(ParserXMLconCPF.tel);
                rcel.setText(ParserXMLconCPF.cel);
                remail.setText(ParserXMLconCPF.email);
                rlimite.setText(ParserXMLconCPF.limite);
                robs.setText(ParserXMLconCPF.obs);
                rcep.setText(ParserXMLconCPF.cep);

                        Painel.add(rnome);
                        Painel.add(rcpf);
                        Painel.add(rrg);
                        Painel.add(Limpar);
                        Painel.add(rdataNascimento);
                        Painel.add(rrua);
                        Painel.add(rbairro);
                        Painel.add(rcidade);
                        Painel.add(rnumero);
                        Painel.add(rcomplemento);
                        Painel.add(ruf);
                        Painel.add(rtel);
                        Painel.add(rcel);
                        Painel.add(remail);
                        Painel.add(rlimite);
                        Painel.add(robs);
                        getContentPane().add(Painel);
                        Painel.setVisible(true);
                        setBounds(500, 0, 300, 560);
                        Painel.setBounds(0,0,300,540);
                                          
        }
        if (objetoRecebeuEvento == Voltar)
        {

              principal = new Principal();
              principal.setVisible(true);
              this.setVisible(false);
        }
    }
}

bem este codigo acima e da janela de consulta que chama o programa em c, que gera o xml, portanto logo abaixo vem o parser q tambem e chamado pela janela...

import java.awt.*;
import javax.swing.*;
import java.util.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.*;

public class ParserXMLconCPF {

    private DocumentBuilderFactory construtorDocumento;
    private Element elementoXML, itemXML;
    private NodeList listaNosArvore, listaFilhos;
    private NamedNodeMap atributos;
    private DocumentBuilder construtor;
    private Document documento;
    public static TreeMap mapa;
    public static String nome, cpf,rg,  nascimento, tel, cel, rua, bairro, complemento, numero, cidade, cep, uf, email, limite, obs;
    public static String rnome, rcpf, rrg, rnascimento, rtel, rcel, rrua, rbairro, rcomplemento, rnumero, rcidade, rcep, ruf, remail, rlimite, robs;
    int i, j, k, totalRegistros;

    public ParserXMLconCPF(String nomeArquivoXML) throws Exception
    {

        construtorDocumento = DocumentBuilderFactory.newInstance();
        construtor = construtorDocumento.newDocumentBuilder();
        documento = construtor.parse(nomeArquivoXML);
        elementoXML = documento.getDocumentElement();
        mapa = new TreeMap();


        try
        {
            listaNosArvore = elementoXML.getElementsByTagName("registro");
            totalRegistros = listaNosArvore.getLength();

            System.out.println("Total de Registros = " + totalRegistros);


            for (i = 0; i < totalRegistros; i++)
            {
                itemXML = (Element) listaNosArvore.item(i);
                listaFilhos = itemXML.getElementsByTagName("dados");

                // controi multiplas listas de atributos da tag <dados>
                atributos = listaFilhos.item(0).getAttributes();

                rcpf = atributos.item(1).getNodeValue();
                rnome = atributos.item(2).getNodeValue();
                rnascimento = atributos.item(3).getNodeValue();
                rrg = atributos.item(4).getNodeValue();
                rtel = atributos.item(5).getNodeValue();
                rcel = atributos.item(6).getNodeValue();
                rrua = atributos.item(7).getNodeValue();
                rcomplemento = atributos.item(8).getNodeValue();
                rnumero = atributos.item(9).getNodeValue();
                rbairro = atributos.item(10).getNodeValue();
                rcidade = atributos.item(11).getNodeValue();
                rcep = atributos.item(12).getNodeValue();
                ruf = atributos.item(13).getNodeValue();
                remail = atributos.item(14).getNodeValue();
                rlimite = atributos.item(15).getNodeValue();
                robs = atributos.item(16).getNodeValue();


                if (rcpf.equals(ConsultaCliente.ocpf))
                {
                    nome =  new String(rnome);
                    cpf = new String(rcpf);
                    nascimento = new String(rnascimento);
                    rg = new String(rrg);
                    tel = new String(rtel);
                    cel = new String(rcel);
                    rua = new String(rrua);
                    complemento = new String(rcomplemento);
                    numero = new String(rnumero);
                    bairro = new String(rbairro);
                    cidade = new String(rcidade);
                    cep = new String(rcep);
                    uf = new String(ruf);
                    email = new String(remail);
                    limite = new String(rlimite);
                    obs = new String(robs);
                    System.out.println(nome);
                }



            }

        } catch (Exception erro) {
            System.out.println("Erro de processamento do documento XML " + erro.getMessage());
        }
    }
}

5 Respostas

J

dar este erro qndo tento executar…

Erro de processamento do documento XML null
null

J

este é o codigo xml

<registros><registro><dados cpf="[telefone removido]" nome="joao_roberto_de_oliveira" nascimento="09/01/1990" rg="[telefone removido]" tel="-" cel="91720314" rua="argentina" complemento="bloco_h,_apartamento_304" numero="581" bairro="quisisana" cidade="pocos_de_caldas" cep="37701248" uf="AL" email="[email removido]" limite="1600,00" obs="aaaaaaaaaaa"/></registro></registros>
Andre_Fonseca

oi,

mude

System.out.println("Erro de processamento do documento XML " + erro.getMessage());

para

System.out.println("Erro de processamento do documento XML " + erro.getMessage()+"\n"+ erro);

Assim conseguira capturar a stack trace completa para tentar idenficar o erro

abs

J

nao ajudoyu muito

Andre_Fonseca

o getCause está nulo, cole a exception que aconteceu…

Criado 31 de maio de 2011
Ultima resposta 31 de mai. de 2011
Respostas 5
Participantes 2