使用 BizTalk 在表达式形状的 LoadXml() 中连接

Concatenate in LoadXml() in expression shape with BizTalk

我是 BizTalk 的新手,我在 BizTalk 的表达式形状中遇到连接问题。

在这个表达式形状中我有这个代码:

xmlBody = xpath(msgIN, "/*[local-name()='CatManager' and namespace-uri()='http://Manager.CatManager']/*[local-name()='Owners']/*[local-name()='Owner'][counterString]");
xmlTemp.LoadXml("<ns0:CatManager xmlns:ns0=\"http://Manager.CatManager\">" + xmlBody + "</ns0:CatManager>");
msgOUT = xmlTemp;

返回此错误:

operator '+' cannot be applied to operands of type 'System.String' and 'System.Xml.XmlDocument'

所以我会试试这个:

xmlTemp.LoadXml("<ns0:CatManager xmlns:ns0=\"http://Manager.CatManager\">" + xmlBody.ToString() + "</ns0:CatManager>");

或者这样:

xmlTemp.LoadXml("<ns0:CatManager xmlns:ns0=\"http://Manager.CatManager\">" + xmlBody.OuterXml + "</ns0:CatManager>");

但是它不起作用,我找不到解决方案。

我找到问题了。我只是忘了在我的 xpath 查询中连接 counterString。

xmlBody = xpath(msgIN, "/*[local-name()='CatManager' and namespace-uri()='http://Manager.CatManager']/*[local-name()='Owners']/*[local-name()='Owner'][" + counterString + "]");

您必须连接字符串 counterString。

xmlBody = xpath(msgIN, "/*[local-name()='CatManager' and namespace-uri()='http://Manager.CatManager']/*[local-name()='Owners']/*[local-name()='Owner'][" + counterString + "]");