Saudações a todos,
Estou tentando fazer um programa que leia XML utilizando o ParserSax, porém ao final da compilação ele gera um erro:
Exception in thread "main" java.lang.NullPointerException
at parsers.ContablilidadeParserSax.parseXml(ContablilidadeParserSax.java:44)
at main.Main.main(Main.java:15)
Pelo que eu entendi o erro acusa um valor nulo sendo que o mesmo não está.
Segue o código:
public class ContablilidadeParserSax extends DefaultHandler implements ContabilidadeParser
{
Double saldoFinal = 0.0;
@Override
public double parseXml(File arquivoXml)
{
try
{
FileReader arquivoXmlLeitor = new FileReader(arquivoXml);
InputSource arquivoEntrada = new InputSource(arquivoXmlLeitor);
XMLReader xr = XMLReaderFactory.createXMLReader();
xr.setContentHandler(this);
xr.setErrorHandler(this);
xr.parse(arquivoEntrada);
}
catch(IOException e)
{
System.out.println("Erro no acesso ao arquivo: "+arquivoXml);
e.printStackTrace();
}
catch(SAXException e)
{
System.out.println("Erro no parsing do arquivo: "+arquivoXml);
e.printStackTrace();
}
return saldoFinal;
}
public void startDocument ()
{
System.out.println("Start document");
saldoFinal = null;
}
public void endDocument ()
{
System.out.println("End document");
}
public void startElement (String uri, String name, String qName, Attributes atts)
{
System.out.println("Start element: " + qName);
}
public void endElement (String uri, String name, String qName)
{
System.out.println("End element: " + qName);
}
public void characters (char[] chars, int start, int length)
{
}
}
O erro aponta para o return SaldoFinal; mas se ver acima o mesmo está declarado como Double saldoFinal = 0.0;
O Main.java está dessa forma:
package main;
import java.io.File;
import parsers.ContabilidadeParser;
import parsers.ContablilidadeParserSax;
public class Main
{
public static void main(String[] args)
{
ContabilidadeParser parser = new ContablilidadeParserSax();
File arquivoXml = new File("contabilidade.xml");
Double saldoFinal = parser.parseXml(arquivoXml);
System.out.println("O saldo final é: "+saldoFinal);
}
}
e o XML
<?xml version="1.0" encoding="ISO8859-1"?>
<extrato>
<movimentacao>
<valor>230,00</valor>
<fluxo>Entrada</fluxo>
</movimentacao>
<movimentacao>
<valor>110.00</valor>
<fluxo>Saída</fluxo>
</movimentacao>
<movimentacao>
<valor>1000.00</valor>
<fluxo>Entrada</fluxo>
</movimentacao>
</extrato>
O que está errado?
Obrigado desde já. :)
