XML

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
jefersonmombach
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Seg, 16 Out 2006 9:12 am
Localização: Toledo - PR
Jeferson Mombach de Sousa
Programador e Analista de Sistemas.

Olá Pessoal, estou com um pequeno problema para resolver.

Criei o XML de uma tabela minha aqui usando o o

dbms_xmlgen.getxml('select * from empresa')

dae ele me gera a XML bonitinha

<?xml version="1.0"?>
<ROWSET>
<ROW>
<CD_EMPRESA>101</CD_EMPRESA>
<NM_EMPRESA>EMPRESA TESTE</NM_EMPRESA>
<CD_CLIFOR>19</CD_CLIFOR>
<CD_EMPRJURID>101</CD_EMPRJURID>
<CD_EMPSCC>101</CD_EMPSCC>
<TP_EMPRESA>M</TP_EMPRESA>
<CD_EMPRFINANC>101</CD_EMPRFINANC>
<TP_CONEXAO>R</TP_CONEXAO>
<DT_RECORD>22/09/2006</DT_RECORD>
<HR_RECORD>14:10</HR_RECORD>
<TP_TRIBIPISAIDA>S</TP_TRIBIPISAIDA>
<CD_EMPRMATRIZ>101</CD_EMPRMATRIZ>
<CD_MOEDAOFICIAL>1</CD_MOEDAOFICIAL>
<CD_MOEDALTERNAT>2</CD_MOEDALTERNAT>
<TP_TXMOEDACONV>A</TP_TXMOEDACONV>
<ST_LOCALBANCO>S</ST_LOCALBANCO>
<ST_TITULPAGAR>N</ST_TITULPAGAR>
<ST_CONTAS>2</ST_CONTAS>
<CD_IDIOMA>1</CD_IDIOMA>
<ST_TITULRECEB>N</ST_TITULRECEB>
<CD_EMPRFOLHA>101</CD_EMPRFOLHA>
<ST_VLTRANSF>O</ST_VLTRANSF>
<NR_SIF>44</NR_SIF>
<CD_ENDERECO>1</CD_ENDERECO>
<CD_EMPRCREDITO>101</CD_EMPRCREDITO>
<CD_EMPRCONTAS>101</CD_EMPRCONTAS>
</ROW>
<ROW>
<CD_EMPRESA>102</CD_EMPRESA>
<NM_EMPRESA>EMPRESA TESTE</NM_EMPRESA>
<CD_CLIFOR>27</CD_CLIFOR>
<CD_EMPRJURID>101</CD_EMPRJURID>
<CD_EMPSCC>102</CD_EMPSCC>
<TP_EMPRESA>F</TP_EMPRESA>
<CD_EMPRFINANC>101</CD_EMPRFINANC>
<TP_CONEXAO>R</TP_CONEXAO>
<DT_RECORD>14/06/2006</DT_RECORD>
<HR_RECORD>07:49</HR_RECORD>
<TP_TRIBIPISAIDA>N</TP_TRIBIPISAIDA>
<CD_EMPRMATRIZ>102</CD_EMPRMATRIZ>
<CD_MOEDAOFICIAL>1</CD_MOEDAOFICIAL>
<CD_MOEDALTERNAT>2</CD_MOEDALTERNAT>
<TP_TXMOEDACONV>A</TP_TXMOEDACONV>
<ST_LOCALBANCO>S</ST_LOCALBANCO>
<ST_TITULPAGAR>S</ST_TITULPAGAR>
<ST_CONTAS>2</ST_CONTAS>
<CD_IDIOMA>1</CD_IDIOMA>
<ST_TITULRECEB>S</ST_TITULRECEB>
<CD_EMPRFOLHA>102</CD_EMPRFOLHA>
<NR_SIF>45</NR_SIF>
<CD_ENDERECO>1</CD_ENDERECO>
<CD_EMPRCREDITO>101</CD_EMPRCREDITO>
<CD_EMPRCONTAS>101</CD_EMPRCONTAS>
</ROW>
</ROWSET>


só que estou com dificuldades para ler este xml ... tipo de forma simples como XMLDecoder do Java

valeuz.
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother, dá uma olhada neste código, vê se te ajuda.

Selecionar tudo

SET SERVEROUTPUT ON
DECLARE
  v_ctx   DBMS_XMLGen.ctxHandle;
  v_file  Utl_File.File_Type;
  v_xml   CLOB;
  v_more  BOOLEAN := TRUE;
BEGIN
  -- Create XML context.
  v_ctx := DBMS_XMLGen.newContext('SELECT table_name, tablespace_name FROM user_tables WHERE rownum < 6');
  
  -- Set parameters to alter default Rowset and Row tag names and default case.
  DBMS_XMLGen.setRowsetTag(v_ctx, 'USER_TABLES'); 
  DBMS_XMLGen.setRowTag(v_ctx, 'TABLE'); 
  --DBMS_XMLGen.setTagCase(v_ctx, DBMS_XMLGen.LOWER_CASE);
  
  -- Add an IE specfic XSL stylesheet reference so browser can transform the file.
  --DBMS_XMLGen.setStylesheetHeader(v_ctx, 'C:\Development\XML\IEStyle.xsl', 'text/xsl');

  -- Create the XML document.
  v_xml := DBMS_XMLGen.GetXML(v_ctx);
  DBMS_XMLGen.closeContext(v_ctx);
  
  -- Output XML document to file.
  v_file := Utl_File.FOpen('C:\Development\XML', 'test1.xml', 'w');
  WHILE v_more LOOP
    Utl_File.Put(v_file, Substr(v_xml, 1, 32767));
    IF Length(v_xml) > 32767 THEN
      v_xml :=  Substr(v_xml, 32768);
    ELSE
      v_more := FALSE;
    END IF;
  END LOOP;
  Utl_File.FClose(v_file);

EXCEPTION
  WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE(Substr(SQLERRM,1,255));
    Utl_File.FClose(v_file);
END;
/
 
Fonte: www.oracle-base.com
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 17 visitantes