Como tratar XML inconsistente quando leio usando DocumentBuilderFactory

0 respostas
H

Caros boa tarde.

Estou com alguns probleminhas aqui.

Estou usando o seguinte código para ler os nós de um arquivo XML:

private static String readTipoXmlFile(File cArquivo) throws IOException { 
		String TipoArquivo = null;
		String ValorNode   = null;
		
		
		// TODO Auto-generated method stub
		try {
			if (cArquivo.getName() != "null") {
				File fXmlFile = cArquivo;
				DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
				DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
				Document doc = dBuilder.parse(fXmlFile);
				doc.getDocumentElement().normalize();
				NodeList nList = doc.getElementsByTagName("ide");
				for (int temp = 0; temp < nList.getLength(); temp++) {
		 
				   Node nNode = nList.item(temp);
				   if (nNode.getNodeType() == Node.ELEMENT_NODE) {
					   
				      Element eElement = (Element) nNode;
				      ValorNode = getTagValue("natOp", eElement);				   }
				}
			}
		}
	  	catch (Exception e) {
	  		  PrintLog.GeraLog("Não Foi possível ler o Arquivo: " + cArquivo.getName() + ". Formato inválido");
	  		  Log.FinalizaLOG("Função readTipoXmlFile");
	  		  
	  }	

	  boolean checkContains1=ValorNode.contains("TRANSPORTE");
	  boolean checkContains2=ValorNode.contains("transporte");
	  if (checkContains1  || checkContains2) {
		  TipoArquivo = "CTe";
	  }
	  else {
		  TipoArquivo = "Nfe";
	  }
		return TipoArquivo;	
	} // private static String readTipoXmlFile(File cArquivo)

O meu problema é que alguns dos arquivos que estou recebendo estão inconsistentes, com caracteres estranhos no inicio do arquivo e queria fazer um tratamento disso.
O erro ocorre na linha

Document doc = dBuilder.parse(fXmlFile);

Tudo bem, eu consigo tratar o retorno dessa função, mas quando faço este tratamento, o arquivo está aberto e não consigo renomear, muito menos deletar ou mover de pasta.
Como faço para liberar este arquivo quando houver erro?

Obrigado.

Criado 14 de agosto de 2012
Respostas 0
Participantes 1