Parser DOM - XML

Pessoal, tenho um arquivo XML dessa forma:

<?xml version="1.0"?>	
<alunos>				
    
      <aluno>
	<nome>José Carlos Ramos</nome>
	<ra>222222222</ra>
	<email>zecarlos@uol.com.br</email>

	<disciplinas>   
                     <disciplina>
	           <nome>Traumatologia</nome>
	           <novidades> bla bla bla </novidades>
	     </disciplina>
	     <disciplina>
	           <nome>Pediatria</nome>
	           <novidades>bla bla bla </novidades>
	     </disciplina>
   	     <disciplina>
	            <nome>Clinica Geral</nome>
	            <novidades> bla bla </novidades>
	     </disciplina>					</disciplinas>
        </aluno>
  </alunos>

NOTEM: Cada aluno do XML pode ter N disciplinas…
Como faço para ler as disciplinas de cada aluno durante o parser???

Tentei o codigo abaixo mas naum deu certo:


NodeList nl = elem.getElementsByTagName("aluno");
//Prepara o vetor.
Vector alunos = new Vector();
		
//Percorre cada elemento usuario Encontrado
for(int i=0;i<nl.getLength();i++){
	
	Element aluno = (Element)nl.item(i);
	String ra = getChildTagValue(aluno, "ra");
	String nome = getChildTagValue(aluno, "nome");	
	String email = getChildTagValue(aluno, "email");
			
	NodeList nlD = aluno.getElementsByTagName("disciplina");
	List listaDisciplinas = new ArrayList();
			
	for(int j = 0; j < nlD.getLength(); j++){
				
		Element elemD = (Element)nlD.item(j);
		String titulo = getChildTagValue(elemD,"nome");
		String novidade = getChildTagValue(elemD,"novidades");
		Disciplina d = new Disciplina(titulo,novidade);
				
		//Adiciona a disciplina na collection de Disciplinas
		listaDisciplinas.add(d);
	}
			
	//Cria uma instancia da classe usuario guj. 
	Aluno a = new Aluno(ra,nome,email,listaDisciplinas);			
			
	//adiciona na colecao
	alunos.addElement(a);				
}
		
return alunos;


private String getChildTagValue(Element elem, String tagName){
	
	NodeList children = elem.getElementsByTagName(tagName);
	if(children == null)return null;
	Element child = (Element)children.item(0);
	if(child == null) return null;
	return child.getFirstChild().getNodeValue();
			
}

Atenção que faço um looping dentro do outro… mas naum funcionou…

Alguém poderia me ajudar?

Abraços,

Mateus

Que tal assim?

Ah inicia o teu XML com

<?xml version="1.0" encoding="ISO-8859-1"?>

Senão não rola…

olá meu caro peczenyj…
eu teste seu codigo para ver se rodava a classe corretamente
mais gera uns erros tbm…

Cara eu tenho de fazer um programa em java que leia XMl
que possa altera-ló e por fim colocalo no banco de dados…

Mais em fim eu não estou conseguindo fazer a leitura e nem a criação de um XML
usando JAVA…
seré que tem com da uma força aew…
abraços…
os erros que da aqui na minha maquina[u]
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:250)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:292)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:146)
at GujXmlReader.lerUsuariosGuj(GujXmlReader.java:24)
at GujXmlReader.main(GujXmlReader.java:70)