Java + DOM + XML

4 respostas
R

Boa noite galera, gostaria de saber como faço para editar o valor de um elemento (tag) no XML, usando o DOM???

Exemplo:

Arquivo original:

Rafael

Arquivo editado:

Rafael Tomaz

Quem puder me ajudar.

[]'s

Rafael

4 Respostas

M

Rafael,

aí vai uma introdução rápida sobre processamento de XML em java que encontrei no Google:
http://www.totheriver.com/learn/xml/xmltutorial.html#5.1.

Se você ler o artigo vai entender que existem diferentes parsers de xml para Java e que o tamanho do XML pode tornar impeditivo o seu uso através do DOM. Bom, mas o seu caso é simples e vou supor que está querendo processar o seguinte arquivo xml:

<?xml version="1.0" encoding="UTF-8"?>
<root>
	<Nome>Rafael</Nome>
</root>

Vou usar o parser DOM do Xerces da Apache (http://xerces.apache.org/xerces-j/index.html).

Baixe o arquivo http://archive.apache.org/dist/xml/xerces-j/Xerces-J-bin.2.5.0.zip, descompacte-o e coloque o jar xmlAPIs.jar no classpath do programa.

Aqui vai o código java para testar:

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;

import com.sun.org.apache.xerces.internal.parsers.DOMParser;


public class TesteXML {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
        try {
        	// nome do arquivo xml
        	String xmlFilename = "arquivo.xml";
        	// Instancia parser DOM do xerces
            DOMParser parser = new DOMParser();
            // processa o arquivo XML
            parser.parse(xmlFilename);
            // recupera o documento em forma de objeto DOM
            Document doc = parser.getDocument();

            // recupera elementos com tag "Nome" 
            NodeList nodes = doc.getElementsByTagName("Nome");
            System.out.println("Há " + nodes.getLength() + 
               "  elemento(s).");
            
            // Para cada elemento
            for(int i=0; i< nodes.getLength(); i++)
            	// imprime valor do primeiro nó que ele contém
            	System.out.println( (i + 1) + " - " + 
            			nodes.item(i).getChildNodes().item(0).getNodeValue() );

        } catch (Exception ex) {
            System.out.println(ex);
        }
	}

}

Para entender sobre como se deve usar o DOM para processar o XML é bom que leia o material de referência:

http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-[telefone removido]

Espero ter ajudado, até.

M

Rapaz, agora que eu vi que não respondi sua pergunta… rsrs :c)

Aí vai então. Confira no código onde tem uma chamada para o método getNodeValue().

Este método é da classe Node, que tem um também método chamado setNodeValue(String) para configurar o valor do nó.

Acho que agora foi…

=)

R

marcio.dantas:
Rapaz, agora que eu vi que não respondi sua pergunta… rsrs :c)

Aí vai então. Confira no código onde tem uma chamada para o método getNodeValue().

Este método é da classe Node, que tem um também método chamado setNodeValue(String) para configurar o valor do nó.

Acho que agora foi…

=)

Muito obrigado Marcio, mas eu já tinha conseguido ehehehe, esqueci de postar, valeu pela atenção e pela sua ajuda…

[]'s

Rafael

R

String xmlFilename = "arquivo.xml"; que arquivo seria esse???

Criado 12 de novembro de 2007
Ultima resposta 7 de jun. de 2013
Respostas 4
Participantes 3