WebSphere Message Broker, Versão 8.0.0.5 Sistemas operacionais: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte as informações sobre a versão mais recente do produto em IBM Integration Bus, Versão 9.0

Iterando sobre Elementos Usando um Nó .NETCompute

Use o método Where para fornecer uma iteração sequencial nos elementos na árvore de mensagens.

É possível usar a matriz resultante em uma instrução foreach() para iterar nos filhos de um NBElement. O loop foreach() permite que um desenvolvedor aja em cada NBElement por vez. O exemplo a seguir mostra como isso pode ser usado para criar uma mensagem de saída de forma semelhante para a mensagem de entrada. Considere uma mensagem de entrada XML simples:
<MessageEnvelope>
	<Element>1</Element>
	<Element>2</Element>
	<Element>3</Element>
</MessageEnvelope>
O código C# a seguir em um nó .NETCompute é iterado nos elementos:
        public override void Evaluate(NBMessageAssembly inputAssembly)
        {
            NBOutputTerminal outTerminal = OutputTerminal("out");

            NBMessage inputMessage = inputAssembly.Message;

            // Crie uma nova mensagem vazia, assegurando-se de que seja descartada após o uso
            using (NBMessage outputMessage = new NBMessage())
            {
                NBMessageAssembly outAssembly = new NBMessageAssembly(inputAssembly, outputMessage);
                NBElement inputRoot = inputMessage.RootElement;
                NBElement outputRoot = outputMessage.RootElement;

                // Copie, opcionalmente, os cabeçalhos das mensagens; remova-os se não forem necessários
                CopyMessageHeaders(inputRoot, outputRoot);

                #region UserCode
                // Inclua o código do usuário nessa região para criar uma nova mensagem de saída
                outputRoot.CreateLastChildUsingNewParser("XMLNSC");
                outputRoot["XMLNSC"].CreateLastChild("OutputMessageEnvelope");
                string notargetnamespace = "";
                NBElement env = inputRoot["XMLNSC"]["MessageEnvelope"];
                var elementlist = env.Where(t => t.Name == "Element");                
                foreach (NBElement element in elementlist)
                {
                    int currentvalue = (Int32)element;                   
                    NBElement outelement = outputRoot["XMLNSC"]["OutputMessageEnvelope"].CreateLastChild(notargetnamespace, "OutElement");
                    outelement.SetValue("After adding 1 to input value we get " + (currentvalue + 1).ToString());
                }
                #endregion UserCode

                // Altere o seguinte se não for propagar a mensagem para o terminal de 'Saída'
                outTerminal.Propagate(outAssembly);
            }
        }
A saída é uma mensagem XML:
<OutputMessageEnvelope>
	<OutElement>After adding 1 to input value we get value 2</OutElement>
	<OutElement>After adding 1 to input value we get value 3</OutElement>
	<OutElement>After adding 1 to input value we get value 4</OutElement>
</OutputMessageEnvelope>
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última atualização:
        
        Última atualização: 2015-02-28 18:31:04


Tópico de TarefaTópico de Tarefa | Versão 8.0.0.5 | bc34221_