Verwenden Sie die Methode Where zur sequenziellen Iteration über die Elemente einer Nachrichtenbaumstruktur.
<MessageEnvelope>
<Element>1</Element>
<Element>2</Element>
<Element>3</Element>
</MessageEnvelope>
public override void Evaluate(NBMessageAssembly inputAssembly)
{
NBOutputTerminal outTerminal = OutputTerminal("out");
NBMessage inputMessage = inputAssembly.Message;
// Erstellen Sie eine neue leere Nachricht, die auf jeden Fall nach der Verwendung verworfen werden muss
using (NBMessage outputMessage = new NBMessage())
{
NBMessageAssembly outAssembly = new NBMessageAssembly(inputAssembly, outputMessage);
NBElement inputRoot = inputMessage.RootElement;
NBElement outputRoot = outputMessage.RootElement;
// Kopieren Sie optional Nachrichtenheader, entfernen Sie diese, falls sie nicht benötigt werden
CopyMessageHeaders(inputRoot, outputRoot);
#region UserCode
// Fügen Sie den Benutzercode in diesem Bereich hinzu, um eine neue Ausgabenachricht zu erstellen
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
// Ändern Sie Folgendes, wenn die Nachricht nicht an das Ausgabeterminal weitergegeben wird
outTerminal.Propagate(outAssembly);
}
}
<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>