Bom dia galera,
Estou precisando de uma ajuda referente a tratativa do erro de NullPoiterException, pois estou desenvolvendo um sistema utilizando WebService, sendo comunicação atravez de uma String contendo o XML.
O problema e que, existe diversas tags no XML de retorno, porem tem itens que nao sao obrigatorios, e automaticamente nao tera a tag, ou seja, se estou querendo pegar os dados de uma tag que nao existe vai acontecer o erro de NullPointerException…
Eu efetuei a tratativa do erro utilizando o bloco try e catch, porem acredito que esta nao é a melhor saida, pois o codigo fica poluido, sendo assim, alguem saberia informar como posso verificar se existe esta tag, evitando o erro NullPointerException sem utilizar o bloco try e catch ?
Agradeço desde ja.
Elton C.
Por que é que você não checa se é null o resultado? Criar variáveis temporárias, e checar o retorno contra null, não machuca…
Na minha experiência, tratar “NullPointerException” é sinal de que você não está fazendo as coisas direito.
obrigado pelo retorno thingol, o problema e que ja efetuei esse processo, segue abaixo o codigo para que possa entender melhor:
tipo tentei fazer o seguinte… porem acontece o Erro de NullPointerExcpetion…
esse e o metodo que preciso verificar realmente…
public ArrayList<PedidoConsultaLote> getRetornoConsultaLote(String xmlResponse) {
ArrayList<PedidoConsultaLote> listaPedidoConsultaLote = new ArrayList<PedidoConsultaLote>();
try {
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
ByteArrayInputStream is = new ByteArrayInputStream(xmlResponse.getBytes());
Document doc = docBuilder.parse(is);
// normalize text representation
doc.getDocumentElement().normalize();
NodeList listNfeTags = doc.getElementsByTagName("ChaveNFe");
NodeList listChaveRPSTags = doc.getElementsByTagName("ChaveRPS");
NodeList listCPFCNPJPrestadorTags = doc.getElementsByTagName("CPFCNPJPrestador");
NodeList listEnderecoPrestadorTags = doc.getElementsByTagName("EnderecoPrestador");
NodeList listCPFCNPJTomadorTags = doc.getElementsByTagName("CPFCNPJTomador");
NodeList listEnderecoTomadorTags = doc.getElementsByTagName("EnderecoTomador");
[quote=elton_csantana]obrigado pelo retorno thingol, o problema e que ja efetuei esse processo, segue abaixo o codigo para que possa entender melhor:
tipo tentei fazer o seguinte… porem acontece o Erro de NullPointerExcpetion…
// Exemplo
if (!doc.getElementsByTagName(“ChaveNFe”)==null) {
System.out.println(“nulo”);
}
else{
NodeList listNfeTags = doc.getElementsByTagName(“ChaveNFe”);
}
[/quote]
Em vez disso:
....
if (doc != null) {
NodeList listNfeTags = doc.getElementsByTagname ("ChaveNFe");
....
if (listNfeTags != null) {
....
}
}
Já pensou que você pode estar (por algum problema do tipo “XML Mal Formado”) estar recebendo o valor de “doc” como nulo?
entao e dificil o problema com o XML de retorno, pois o retorno e feito pelo server da prefeitura…
mas pela resposta, vou tentar fazer as alterações, de acordo com as dicas acima…
obrigado mais uma vez pela ajuda…
Ae galera problema resolvido, conforme a dica do amigo acima…