本文中的第一个建议 - http://blog.eliasen.dk/2006/11/05/LoopingAroundElementsOfAMessage.aspx显示了如何遍历XML并将XML拆分为业务流程中的各个元素。
如果我想在所有后续的单个xmls中包含原始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>
我们如何在输出中包含根节点的命名空间定义?
答案 0 :(得分:1)
这应该有效:
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 + "]");
其中&#39; varXmlDoc&#39;是类型System.Xml.XmlDocument