我在编排中使用决定形状,我收到2 xml文件。 并且我使用xpatch过滤该文件,因为依赖第一个节点我必须在不同的地图中处理。我使用xpach语句来查找第一个节点是否等于特定值,如果是,它将处理,如果不是它将被发送到第二个映射。 我应该怎么做?我通常不会这样做,并试图找出我的陈述应该如何看待
xpath(ACKSchema(name(/*))== CstmrPmtStsRpt;
答案 0 :(得分:2)
您可以使用xpath query功能探测消息中的值,或设置值。接收字符串值的语法是
variable = xpath(BiztalkMessage,"string(xpath-query)");
在消息中设置值
xpath(BiztalkMessage,"xpath-query") = value
找到要使用的xpath的简单方法是在Visual Studio BizTalk项目中打开架构,然后选择将保存您的值的节点。然后查看属性窗口并使用“Instance Xpath”值(有关详细信息,请参阅this post)
xpath查询可能有点冗长,根据您的情况,您可以缩短它(保真度很小)。如果要比较字符串值,则需要使用字符串函数;
xpath(msgTestMessage,"string(//MyNode)") == "TestValue"
如果没有xpath string function,您将收到等效的节点集,而不是值。
答案 1 :(得分:1)
如果两个xml文件具有不同的根节点,则可能根本不需要使用xpath并确定形状。
Using direct bound ports BizTalk可以自动将您的邮件路由到正确的“订阅者”。您将两个输入消息放入消息框数据库中。如果为每种消息类型创建一个订阅者,BizTalk会将消息发送给正确的订阅者。
BizTalk使用目标命名空间和根节点名称来决定哪个订阅者获取哪条消息。