Percorre os elementos de um XML usando Velocity

Olá pessoal!

Estou desenvolvendo meu projeto final da faculdade, cujo o objetivo é através de um XML gerado de um diagrama de classe converter em interfaces adobe flex, eu estou tentando usar o velocity para poder fazer esse processo, mas não estou entendendo muito bem, gostaria de saber como faço para percorrer todo o XML com o velocity em uma estrutura de repetição.

O codigo abaixo é o meu XML:

inicio XML*********************

<?xml version="1.0" encoding="UTF-8"?>

*****************Fim do XML ***********************

Abaixo esta a minha classe java:


package br.com.unigranrio.projetofinal.templates;

import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.Writer;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.jdom.Document;
import org.jdom.input.SAXBuilder;


public class ConversorXML {
	
	public ConversorXML(String arquivoTemplete) {
		
		         Writer writer = null;
		 
		         try {
		             Velocity.init();
		 
		             SAXBuilder builder;
		             Document root = null;
		
		             try {
		                 builder = new SAXBuilder("org.apache.xerces.parsers.SAXParser");
		                 root = builder.build("C:/modelo.xml");
		             } catch (Exception exception) {
		                 exception.printStackTrace();
		             }
		 
		             VelocityContext context = new VelocityContext();
		             context.put("root", root);
		 
		             Template template = Velocity.getTemplate(arquivoTemplete);
		 
		             writer = new BufferedWriter(new OutputStreamWriter(System.out));
		             template.merge(context, writer);
		         } catch (Exception ex) {
		             ex.printStackTrace();
		         } finally {
		             if (writer != null) {
		                 try {
		                     writer.flush();
		                     writer.close();
		                 } catch (Exception ex) {
		                     ex.printStackTrace();
		                 }
		             }
		         }
		     }
	
	public static void main(String[] args) {
		ConversorXML converte = new ConversorXML("./src/velocity/XML/templateView.vm");
	}
	
}

Abaixo esta o template do velocity que estou usando juntamente com o codigo do adobe flex:


 #macro ( recursive $xml $indent )     
  #if( $xml.getChildren().size() > 0 )
  $indent <$xml.getName()> 
  #foreach ($child in $xml.getChildren() ) 
  #recursive( $child "$indent  " )
  #end
  $indent </$xml.getName()>
  #else
  $indent <$xml.getName()>
 $indent    $xml.getTextTrim()
 $indent </$xml.getName()>
 #end
 #end
 
 <mx:Label x="43"
	     y="16"
	     text="$root.getRootElement().getChild("Models").getChild("Class").getChild("ModelChildren").getChild("Attribute").getAttributeValue("Name")"/>
	     
	<mx:TextInput x="94"
		y="15.65"
		id="campoProntuario"
		width="118"
		tabIndex="1"
		enabled="true"
		maxChars="100"
		text="{Application.application.objClienteSelecionado.prontuario}"/>

O resultado quando executo minha aplicação:


<mx:Label x="43"
	     y="16"
	     text="Codigo"/>
	     
	<mx:TextInput x="94"
		y="15.65"
		id="campoProntuario"
		width="118"
		tabIndex="1"
		enabled="true"
		maxChars="100"
		text="{Application.application.objClienteSelecionado.prontuario}"/>

Até ai tudo bem, o problema que ele so pega o primeiro elemento que o é codigo, como faço para o meu template percorrer todo meu xml e pegar todos os atributos que quero?

Obrigado!!!