Trabalhar com retorno XML do Oracle

Estou desenvolvendo um sistema online com Java + Flex + Oracle, e estou com problema para conseguir ler uma SQLX do oracle em java.
rodo a seguinte sql no oracle

SELECT XMLELEMENT("NODE", XMLATTRIBUTES( NVL(M.MEN_RECNO, 0) AS "MEN_RECNO", NVL(M.MEN_DESCRICAO, 0) AS "MEN_DESCRICAO", NVL(M.MEN_RECNO_PAI, 0) AS "MEN_RECNO_PAI" ), ( SELECT XMLAGG( XMLELEMENT("NODE", XMLATTRIBUTES( NVL(F.MEN_RECNO, 0) AS "MEN_RECNO", NVL(F.MEN_DESCRICAO, 0) AS "MEN_DESCRICAO", NVL(F.MEN_RECNO_PAI, 0) AS "MEN_RECNO_PAI", P.PER_ALTERAR AS "PER_ALTERAR", P.PER_INSERIR AS "PER_INSERIR", P.PER_EXCLUIR AS "PER_EXCLUIR" ) ) ORDER BY F.MEN_ORDEM ) FROM MENU F WHERE F.MEN_RECNO_PAI = M.MEN_RECNO ) ) AS MENU FROM MENU M INNER JOIN PERMISSAO P ON P.MEN_RECNO = M.MEN_RECNO WHERE M.MEN_RECNO_PAI IS NULL AND M.MOD_RECNO = '015' AND P.GUS_RECNO = 1 ORDER BY M.MEN_ORDEM

A SQL me retorna certinho oq preciso para montar o menu da minha aplicação, dai con esse passo pronto fui pro java para fazer um servlet aonde escrevesse isso e eu consumisse no flex para montar um treeview.
Bom antes de montar o servlet fui fazer uns teste com uma classe simples em java que esta abaixo

[code]import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.SQLXML;
import java.sql.Statement;

public class TesteConexao {
public static void main(String[] args) throws SQLException {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn = DriverManager.getConnection(“jdbc:oracle:thin:@//127.0.0.1:8080/banco”, “sys”, “123”);
Statement stmt = conn.createStatement();

    String sql = 
        "	SELECT"+
        "	  XMLELEMENT(" + '"' + "NODE" + '"' + "," + 
        " 	    XMLATTRIBUTES("+
        " 	      NVL(M.MEN_RECNO, 0) AS " + '"' + "MEN_RECNO" + '"' + "," +
        "	      NVL(M.MEN_DESCRICAO, 0) AS " + '"' + "MEN_DESCRICAO" + '"' + "," +
        "	      NVL(M.MEN_RECNO_PAI, 0) AS " + '"' + "MEN_RECNO_PAI" + '"' +
        "	    )," +
        "	    ( SELECT XMLAGG("+
        "	               XMLELEMENT(" + '"' + "NODE" + '"' + ","+
        "	                 XMLATTRIBUTES("+
        "	                   NVL(F.MEN_RECNO, 0) AS " + '"' + "MEN_RECNO" + '"' + "," +
        "	                   NVL(F.MEN_DESCRICAO, 0) AS " + '"' + "MEN_DESCRICAO" + '"' + "," +
        "	                   NVL(F.MEN_RECNO_PAI, 0) AS " + '"' + "EN_RECNO_PAI" + '"' + ","+
        "	                   P.PER_ALTERAR AS " + '"' + "PER_ALTERAR" + '"' + "," +
        "	                   P.PER_INSERIR AS " + '"' + "PER_INSERIR" + '"' + "," +
        "	                   P.PER_EXCLUIR AS " + '"' + "PER_EXCLUIR" + '"' +
        "	                 )"+
        "	               )"+
        "	               ORDER BY F.MEN_ORDEM"+
        "	             )"+        
        "	      FROM MENU F"+ 
        "	      WHERE F.MEN_RECNO_PAI = M.MEN_RECNO"+        
        "	    )"+
        "	  ) AS MENU" +
        "	FROM MENU M"+
        "	INNER JOIN PERMISSAO P ON P.MEN_RECNO = M.MEN_RECNO"+
        "	WHERE M.MEN_RECNO_PAI IS NULL AND M.MOD_RECNO = '015' AND P.GUS_RECNO = 1"+
        "	ORDER BY M.MEN_ORDEM";       	
            
    ResultSet rset = stmt.executeQuery(sql);  
           
    while (rset.next())
    {  	
    	System.out.println(rset.getString());
    }
    
    stmt.close();

}

}
[/code]

E me deparei com os eguinte problema, o java executa a sql sem dar erro mas qdo vai mostrar o conteudo do rset ele mostra nul.
A sql que eu monto dinamicamente esta certa pois eu ja dei um System.out.println e oq mostrou rodou perfeitamente no oracle.
Alguem poderia me dizer qual oq estou fazendo errado???

Você mudou alguma coisa quando foi postar este programa. Seria “rset.getString (1)” ? Ou então você está usando o Eclipse e ele, como de costume, aceitou um programa com erros de compilação e só vai reclamar quando executarmos o programa?

De qualquer maneira, o objeto XML retornado não é uma String, pelo que suponho, e sim um objeto específico do Oracle.

http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96620/xdb09jav.htm#1656

Esqueci mesmo de colocar o numero 1 pq eu alterei umas coisas antes de colocar
Mas mesmo assim ele esta me retornando 2 linhas null onde teria q retornar preenchidas igual abaixo

<NODE MEN_RECNO="015015" MEN_DESCRICAO="Cadastros" MEN_RECNO_PAI="0"><NODE MEN_RECNO="015016" MEN_DESCRICAO="Funcionários" MEN_RECNO_PAI="015015" PER_ALTERAR="N" PER_INSERIR="N" PER_EXCLUIR="N"></NODE><NODE MEN_RECNO="015017" MEN_DESCRICAO="E-mail" MEN_RECNO_PAI="015015" PER_ALTERAR="N" PER_INSERIR="N" PER_EXCLUIR="N"></NODE></NODE> <NODE MEN_RECNO="015018" MEN_DESCRICAO="Controle de Acessos" MEN_RECNO_PAI="0"><NODE MEN_RECNO="015019" MEN_DESCRICAO="Grupo de Usuários" MEN_RECNO_PAI="015018" PER_ALTERAR="N" PER_INSERIR="N" PER_EXCLUIR="N"></NODE><NODE MEN_RECNO="015020" MEN_DESCRICAO="Usuários" MEN_RECNO_PAI="015018" PER_ALTERAR="N" PER_INSERIR="N" PER_EXCLUIR="N"></NODE></NODE>

Consegui !!!
Fiz um cast no oracle para retornar uma varchar2(1000)

Hum… esses casts são sinal de “funciona agora, mas se o menu ficar maior”?