try { InputStream is = new FileInputStream("src/23110305329222000176550010000336830000336831-nfe.xml"); XMLInputFactory factory = XMLInputFactory.newInstance(); XMLEventReader eventos = factory.createXMLEventReader(is);
Produto produto = new Produto();
List<Produto> produtos = new ArrayList<>();
while(eventos.hasNext()){
XMLEvent evento = eventos.nextEvent();
if(evento.isStartElement() && evento.asStartElement().getName().getLocalPart().equals("prod")){
produto = new Produto();
}else if(evento.isStartElement() && evento.asStartElement().getName().getLocalPart().equals("cProd")){
evento = eventos.nextEvent();
String codigo = evento.asCharacters().getData();
produto.setCodigo(codigo);
}else if(evento.isStartElement() && evento.asStartElement().getName().getLocalPart().equals("xProd")){
evento = eventos.nextEvent();
String descricao = evento.asCharacters().getData();
produto.setDescricao(descricao);
}else if(evento.isEndDocument() && evento.asEndElement().getName().getLocalPart().equals("prod")) {
produtos.add(produto);
}
}
System.out.println(produtos);
} catch (FileNotFoundException | XMLStreamException e) {
e.printStackTrace();
}
Erro:
Exception in thread "main" java.lang.ClassCastException: class com.sun.xml.internal.stream.events.EndDocumentEvent cannot be cast to class javax.xml.stream.events.EndElement (com.sun.xml.internal.stream.events.EndDocumentEvent and javax.xml.stream.events.EndElement are in module java.xml of loader 'bootstrap')
at java.xml/com.sun.xml.internal.stream.events.DummyEvent.asEndElement(DummyEvent.java:122)
at com.trilha.java.xml.LerArquivosXmlComStax.main(LerArquivosXmlComStax.java:37)