Criando um arquivo XML com Oracle PL/SQL

[ad#texto]

Escrever um XML utilizando uma procedure PL/SQL é bem simples, salvar este XML em uma pasta qualquer do servidor para intercambio de dados é mais simples ainda, segue um exemplo utilizando CLOB para armazenar o stream que será o arquivo XML e depois o mesmo é criado e salvo na pasta indicada utilizando o pacote DBMS_XSLPROCESSOR.

DECLARE
 varClob     CLOB;
 varString   VARCHAR2(4000);

BEGIN
 -- Abre a instancia do CLOB e o coloca em modo de escrita
 dbms_lob.createtemporary(varClob, TRUE);
 dbms_lob.open(varClob, dbms_lob.lob_readwrite);

 -- Variável string para armazenar parte do XML
 varString := '' ||
              '' ||
              'Este é um teste' ||
              '';

 -- Cria um XML simples de testes, pode ser dado quantos APPEND quiser e
 -- ir montando o XML durante sua rotina PL/SQL
 dbms_lob.writeappend(varClob, length(varString), varString);

 -- Aqui irá de fato gerar o arquivo físico do XML
 DBMS_XSLPROCESSOR.CLOB2FILE(varClob, '/minha/pasta/', 'teste.xml', NLS_CHARSET_ID('UTF8'));

 -- Liberar dados do CLOB da memória
 dbms_lob.close(varClob);
 dbms_lob.freetemporary(varClob);
END;

O exemplo é muito simples e didático, a novidade fica por conta do pacote DBMS_XSLPROCESSOR, no meu caso eu passei os seguintes parâmetros em ordem:

  • Variável CLOB;
  • Pasta de destino do arquivo XML;
  • Nome do arquivo XML;
  • Encoding, no exemplo eu utilizei UTF-8, mas pode ser utilizado qualquer outro.

Note que neste exemplo eu não efetuei nenhum parse, ou seja, o XML é gerado de forma bruta e qualquer anormalidade não será validada e consequentemente um XML inválido, uma solução mais refinada seria efetuar o parse do CLOB para evitar que alguma falha no XML comprometesse um processo posterior.

No próximo artigo irei melhorar este exemplo e mostrar como criar um XML submetendo-o antes de criar um arquivo a um parse.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.