Se for necessário incluir dados binários ou caracteres inválidos em seus documentos XML, o método mais seguro é codificar s dados como uma cadeia binária.
Codificações Binárias para XML
hexBinary: <nonXMLChars>0001020304050607080B0C0E0F</nonXMLChars>
base64Binary: <nonXMLChars>AAECAwQFBgcICwwODw==</nonXMLChars>
A codificação base64Binary faz melhor utilização dos caracteres XML disponíveis e, na média, um campo binário codificado por base64 tem 2/3 do tamanho de seu hexBinary equivalente. Base64Binary é amplamente utilizado pelo formato MIME e por vários padrões baseados em XML.
Você pode preferir utilizar a codificação hexBinary mais simples se estiver enviando dados a aplicativos que não podem decodificar dados base64 e se o aumento do tamanho da mensagem não for importante.
Analisando Dados Binários
O analisador XMLNSC decodifica automaticamente os dados hexBinary ou base64Binary, sendo guiado pelo tipo simples do elemento ou atributo que contém dados binários. A árvore de mensagens conterá o valor de BLOB decodificado.
Se estiver utilizando o domínio XMLNS, você deve analisar os dados binários como uma cadeia. Eles aparecerão na árvore de mensagens como um valor CHARACTER. Se os dados estiverem codificados como hexBinary, é possível utilizar a função ESQL CAST para converter um valor de BLOB. Se os dados forem codificados como base64Binary, a abordagem mais fácil será utilizar a função BASE64DECODE. Para obter informações adicionais, consulte Função BASE64DECODE.
Gerando Dados Binários
É possível gerar dados binários em seu XML de saída em codificação hexBinary ou base64Binary.
Para hexBinary, utilize a instrução ESQL CAST para converter seus dados BLOB para uma cadeia hexBinary.
-- ESQL code to generate base64-encoded binary data
DECLARE myBLOB BLOB;
-- Populate myBLOB with your binary data
CREATE LASTCHILD OF OutputRoot.XMLNSC.message
TYPE BITOR(XMLNSC.Attribute, XMLNSC.base64Binary)
NAME myBase64Element
VALUE myBLOB;
Observe que configurar o tipo de campo para XMLNSC.base64Binary não altera o valor lógico na árvore de mensagens. No fluxo de mensagens, ainda é um BLOB, e se você chamar a representação da cadeia, é reportado como cadeia hexBinary. Entretanto, quando a árvore de mensagens é convertida a um fluxo de bits (em um nó de saída, ou por uma chamada ao ASBITSTREAM ) a conversão base64 é desempenhada autocaticamente, e o XML de saída contém a cadeia base64 correta.