Convertendo Dados em uma Mensagem XML

Muitas vezes é preciso converter dados de um formato para outro. Por exemplo, em uma mensagem, os tipos de itens são conhecidos por nomes e, em outra mensagem, os itens são conhecidos por números. Por exemplo:

Nome do Tipo       Código do Tipo

Confectionary      2000
Newspapers         3000
Hardware           4000

Considere a seguinte mensagem de entrada:

<Dados>
    <Items>
     <Item>
            <Cat>1000</Cat>
            <Description>Milk Chocolate Bar</Description>
            <Type>Confectionary</Type>
     </Item>
     <Item>
            <Cat>1001</Cat>
            <Description>Daily Newspaper</Description>
            <Type>NewsPapers</Type>
     </Item>
     <Item>
            <Cat>1002</Cat>
            <Description>Kitchen Sink</Description>
            <Type>Hardware</Type>
     </Item>
    </Items>
    <TranslateTable>
        <Translate>
            <Name>Confectionary</Name>
            <Number>2000</Number>
        </Translate>
        <Translate>
            <Name>NewsPapers</Name>
            <Number>3000</Number>
        </Translate>
        <Translate>
            <Name>Hardware</Name>
            <Number>4000</Number>
        </Translate>
    </TranslateTable>
</Data>

Essa mensagem possui duas seções: a primeira é uma lista de itens na qual cada item possui um número de catálogo e um tipo; a segunda é uma tabela de conversão entre nomes de tipos descritivos e códigos de tipos numéricos. Se você incluir um nó Compute com a seguinte transformação:

SET OutputRoot.XML.Result.Items.Item[] =
      (SELECT M.Cat, M.Description, T.Number As Type
     FROM              InputRoot.XML.Data.Items.Item[]               As M,
              InputRoot.XML.Data.TranslateTable.Translate[] As T
          WHERE M.Type = T.Name
   );

será gerada a seguinte mensagem de saída:

 <Result>
    <Items>
     <Item>
            <Cat>1000</Cat>
            <Description>Milk Chocolate Bar</Description>
            <Type>2000</Type>
     </Item>
     <Item>
            <Cat>1001</Cat>
            <Description>Daily Newspaper</Description>
            <Type>3000</Type>
     </Item>
     <Item>
            <Cat>1002</Cat>
            <Description>Kitchen Sink</Description>
            <Type>4000</Type>
     </Item>
    </Items>
</Result>

No resultado, cada nome de tipo foi convertido em seu código correspondente. Nesse exemplo, os dados e a tabela de conversão estavam na mesma árvore de mensagens, embora isso não seja um requisito. Por exemplo, a tabela de conversão não pôde ser codificada em um banco de dados ou pode ter sido configurada, em LocalEnvironment, por um nó Compute anterior.

Conceitos relacionados
Visão Geral de Fluxos de Mensagens
Visão Geral do ESQL
Modelagem de Mensagens
Tarefas relacionadas
Projetando um Fluxo de Mensagens
Definindo o Conteúdo do Fluxo de Mensagens
Gerenciando Arquivos ESQL
Referências relacionadas
Nó Compute
Nó Database
Nó Filter
Referência de ESQL
Função SELECT
Instrução SET
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ak05790_