循环消息的元素并包括根节点

Looping around elements of a message and include root node

本文中的第一个建议 - http://blog.eliasen.dk/2006/11/05/LoopingAroundElementsOfAMessage.aspx 展示了如何遍历 XML 并将 XML 拆分为编排中的各个元素。

如果我想在所有后续个体xml中包含原始xml的根节点怎么办?例如,这是 xml 他们有:

<Employees>
<Employee title="mgr">
</Employee>
<Employee title="vp">
</Employee>
<Employee title="ceo">
</Employee>
</Employees>

如果我希望每个元素输出包含在 <Employees> 元素中,表达式会是什么样子:

<Employees>
<Employee title="mgr">
</Employee>
</Employees>

<Employees>
<Employee title="vp">
</Employee>
</Employees>

<Employees>
<Employee title="ceo">
</Employee>
</Employees>

该示例中使用的表达式是这样的:

EmployeeMessage = xpath(InputMessage, "/*[local-name()='Employees' and namespace-uri()='']/*[local-name()='Employee' and namespace-uri()=''][" + counterStr + "]");

我正在将此 xml 发送到期望根节点是这样的消息队列系统。

请帮忙。谢谢你。

更新:

我发现根节点需要包含名称空间定义才能正常工作。像这样:

<Employees xmlns="http://mycompany.com/hr.xsd"> <Employee title="mgr"> </Employee> </Employees>

我们如何在输出中包含根节点的命名空间定义?

这应该有效:

varXmlDoc.LoadXml("<Employees xmlns='http://mycompany.com/hr.xsd'/>");
EmployeeMessage = varXmlDoc;
xpath(EmployeeMessage, "/Employees") = xpath(InputMessage, "/*[local-name()='Employees' and namespace-uri()='']/*[local-name()='Employee' and namespace-uri()=''][" + counterStr + "]");

其中 'varXmlDoc' 是类型 System.Xml.XmlDocument