Olá, tenho que fazer um sistema que leia XML's de NFe, aonde tem tags do XML que podem não existir no XML. Eu tenho um exemplo assim pra ler o xml:
//Expressão XPath
String expression = "//NFe//ide/cUF";
String xmlPath = "C:/NFe.xml";
//@Document: Interface que representa o documento XML
Document doc;
//@DocumentBuilder: Utilizada para construir um @Document do arquivo XML em questão
DocumentBuilder builder;
//@DocumentBuilderFactory: Cria uma nova instância de um @DocumentBuilder
DocumentBuilderFactory domBuilder = DocumentBuilderFactory.newInstance();
//@XPath: Interface que fornece o acesso ao ambiente e expressões XPath
XPath xpath;
try {
//Constroi os objetos @DocumentBuilder e @Document
builder = domBuilder.newDocumentBuilder();
doc = builder.parse(xmlPath);
//@XPathFactory usada para criar criar os objetos @XPath
xpath = XPathFactory.newInstance().newXPath();
//@XPathExpression Interface que fornece acesso às expressões XPath compiladas.
XPathExpression expr = xpath.compile(expression);
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
//Iteração da lista de NODES
for (int i = 0; i < nodes.getLength(); i++) {
//Retorna o texto do NODE "Title"
System.out.println( nodes.item(i).getTextContent() );
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (XPathExpressionException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Neste caso a expressão ta procurando pela tag cUF, que sempre vai existir no XML, porém quando tiver uma TAG que não exista e eu tentar procurar por ela na expressão da null pointer exception.
Como posso fazer nesse caso?