XML - Tags com mesmo nome

5 respostas
M

Pessoal.

Estou fazendo um programa para ler um arquivo XML e gravar alguns dados que eu preciso em um arquivo txt. Acontece que o arquivo XML possui tags iguais e eu não sei como faço pra pegar o conteúdo dessas tags. A estrutura do arquivo XML é a seguinte:

Paulo SIlva windows XP office XP Macromedia Flash Joel Pereira windows XP

Preciso pegar o conteúdo de cada uma das tags id de cada user.

Alguém sabe me ajudar?

5 Respostas

Machado107

Mas você tá usando o que para manipular esse XML? DOM, Xstream, JAX-B, alguma coisa que você inventou?

M

Opa … esqueci de colocar… Estou usando DOM para manipular o arquivo.

Rodrigo_Carvalho_Aul

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse("arquivo.xml"); NodeList ids = doc.getDocumentElement().getElementsByTagName("id");
http://java.sun.com/j2se/1.4.2/docs/api/org/w3c/dom/Element.html

[]'s

Rodrigo C. A.

M

Então Rodrigo… eu tentei aqui com esse código e ele pega os valores de todas as tags “id”, do documento inteiro. O que eu queria era associar as ids com seus respectivos user.
O que eu preciso é criar uma string assim: “User: Paulo Silva; Softwares: Windows XP Office XP Macromedia Flash”.
Como eu faço?

M

Galera, valeu pela ajuda. Já resolvi o problema. Ficou assim o código:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 DocumentBuilder db = dbf.newDocumentBuilder();
 Document doc = db.parse( xmlPathname );
 Element elem = doc.getDocumentElement();
	    
 NodeList nl = elem.getElementsByTagName( "user" );
	           
 Vector users = new Vector();
 // percorre cada elemento user
 for( int i=0; i<nl.getLength(); i++ ) {
	Element tagUser = (Element) nl.item( i );
                NodeList software_id = tagUser.getElementsByTagName("id");
	String softwares = "";
	for(int j=0; j<software_id.getLength(); j++)
	{
	    Element id = (Element) software_id.item(j);
	    softwares= softwares+ " " + id.getFirstChild().getNodeValue();
	 }
Criado 20 de abril de 2006
Ultima resposta 2 de mai. de 2006
Respostas 5
Participantes 3