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 := '<?xml version="1.0" encoding="utf-8"?>' ||
              '<root>' ||
              '<teste>Este é um teste</teste>' ||
              '</root>';
 
 -- 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.

Tags:,
Petter Rafael
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.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 324 outros assinantes

Busca

julho 2020
DSTQQSS
 1234
567891011
12131415161718
19202122232425
262728293031 

Categorias