Gerar arquivo XML com PL/SQL utilizando Parser
[ad#texto]
Continuando a falar sobre criação de arquivos XML utilizando Oracle PL/SQL, no primeiro exemplo não utilizamos nenhum Parser, ou seja, mesmo que a estrutura do XML estivesse errada o arquivo seria criado, deixando o inconveniente de que ao utilizar o XML é que iríamos detectar possíveis erros, quando o ideal é realizar esta tarefa de validação no momento da criação do arquivo.
No exemplo que iremos apresentar vamos demonstrar como criar um arquivo XML com PL/SQL efetuando o parser antes da gravação física no arquivo.
declare
varXML CLOB;
varTexto VARCHAR2(4000);
varDom DBMS_XMLDOM.DOMDocument;
begin
-- Exemplo de um XML para testes
varTexto := '' ||
'' ||
'Teste de XML' ||
'Sem XSLT ' ||
' ' ||
' ';
-- Inicializar o CLOB
dbms_lob.createtemporary(varXML, TRUE);
dbms_lob.open(varXML, dbms_lob.lob_readwrite);
-- Atribir texto (string) ao CLOB
dbms_lob.writeappend(varXML, length(varTexto), varTexto);
-- Inicia o processamento DOM e faz o parser utilizando XMLType.createXML
varDom := DBMS_XMLDOM.NewDOMDocument(XMLType.createXML(varXML));
-- Cria o arquivo XML no disco
DBMS_XMLDOM.WriteToFile(varDom, '/minha/pasta/meu_arquivo.xml');
-- Liberar o objeto DOM da memória
DBMS_XMLDOM.freeDocument(varDom);
-- Liberar dados do CLOB da memória
dbms_lob.close(varXML);
dbms_lob.freetemporary(varXML);
end;
O exemplo é bem semelhante ao apresentado no primeiro exemplo, com a exceção de que agora o arquivo é gerado utilizando DOM e que efetuamos o parser utilizando o XMLType.createXML.
Utilizando o XMLType, qual erro na estrutura ou até mesmo a utilização de caracteres especiais em locais errados irão levantar uma exceção, evitando a criação de um XML errado.