Объединить в LoadXml () в форме выражения с BizTalk - PullRequest
0 голосов
/ 31 января 2019

Я довольно новичок в 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;

, который возвращает этоошибка:

оператор '+' нельзя применить к операндам типа 'System.String' и '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>");

Но это не работает, и я не могу найти решение.

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Вы должны объединить строку counterString.

xmlBody = xpath(msgIN, "/*[local-name()='CatManager' and namespace-uri()='http://Manager.CatManager']/*[local-name()='Owners']/*[local-name()='Owner'][" + counterString + "]");
0 голосов
/ 31 января 2019

Я нахожу проблему.Я просто забыл объединить counterString в своем запросе xpath.

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