Importar e Ler Xml

Bom dia pessoal, estou começando a programar agora e estou com um pouco de dificuldade, estou criando um programa para controle de estoque.
Quero que a entrada de produtos no estoque seja feita pela leitura do XML, consegui fazer o código separados e ambos funcionaram mas não estou conseguindo junta-los, para importar e ler o arquivo.

Esse é meu codigo:

import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class LeituraDeArquivo {

public static void main(String[] args) {

	JFileChooser escolheArquivo = new JFileChooser();

	FileNameExtensionFilter filter = new FileNameExtensionFilter("Selecione apenas Xml", "xml");
	
	escolheArquivo.setFileFilter(filter);
	
	String arquivoEscolhido = escolheArquivo.getSelectedFile().getAbsolutePath();
	String nomeArquivo = arquivoEscolhido;
	File nomeArquivo1 = new File(nomeArquivo);
	int retorno = escolheArquivo.showOpenDialog(null);
	if (retorno == JFileChooser.APPROVE_OPTION) {
		try{
			
			DocumentBuilderFactory documentBuuilderFactory = DocumentBuilderFactory.newDefaultInstance();
			DocumentBuilder documentBuilder = documentBuuilderFactory.newDocumentBuilder();
			Document document = documentBuilder.parse(nomeArquivo1);
			System.out.println("Raiz" + document.getDocumentElement().getNodeName());
			if (document.hasChildNodes()) {
				printNodeList(document.getChildNodes());
			}

		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("Diretorio" + System.getProperty("user.dir"));
		}	
	}
}	
	
private static void printNodeList(NodeList nodeList) {
	for (int count = 0; count < nodeList.getLength(); count++) {
		Node elemNode = nodeList.item(count);
		if (elemNode.getNodeType() == Node.ELEMENT_NODE) {

			System.out.println("\nNode Name =" + elemNode.getNodeName() + " [OPEN]");
			System.out.println("Node Content =" + elemNode.getTextContent());
			if (elemNode.hasAttributes()) {
				NamedNodeMap nodeMap = elemNode.getAttributes();
				for (int i = 0; i < nodeMap.getLength(); i++) {
					Node node = nodeMap.item(i);
					System.out.println("attr name : " + node.getNodeName());
					System.out.println("attr value : " + node.getNodeValue());
				}
			}
			if (elemNode.hasChildNodes()) {

				printNodeList(elemNode.getChildNodes());
			}
			System.out.println("Node Name =" + elemNode.getNodeName() + " [CLOSE]");
		}
	}
}

}

Poderiam me ajudar!?

Aconselho voce a usar o JAXB. tem um topico meu aqui, um que postei e um que respondi. com o exemplo do codigo.

JaxB lento

extrair produtos nfe

um exemplo de como voce vai usar o xjc
exemplo serpro

resumindo, voce vai usar o xjc para criar um pacote com as classes que voce vai gerar a partir do xmlschema da nota fiscal eletronica.
download dos schemas

feito isso, voce vai usar o jaxb para pegar o arquivo, e transformalo num objeto das classes. e a partir dai voce pega o que voce quiser da nota fiscal. Os dois primeiros links tem exemplos de codigo.

1 curtida

Obrigada, Thiago

Verei se consigo utilizar esse código, ele parece mais direto e preciso.

Bom dia, Thiago!

Comecei a estudar Java recentemente, então estou muito perdida. Segui os passos que você me passou, mas mesmo assim não consegui utilizar o JAXB, assisti a um tutorial, mas lá não ensinada com usar o xjc, apenas como gerar e ler o mesmo xml. Eu estou utilizando a IDE Eclipse e JDK 14, sabe me dizer onde eu encontro um tutorial para utilizar com essas ferramentas, já procurei e não entrei. Mudei aquele código anterior e agora consigo pegar os nodos que me interessam, gostaria muito de saber como usar o JAXB para planos futuros.

Desde já agradeço pela ajuda.

Aulas 14, 15 e 17

é seu o site?

é nao. mas esse material eh de um curso pago, que eles disponibilizaram as aulas gratuitamentes hoje.

1 curtida