我必须在进一步处理之前将传入的XML消息(下面的示例)验证到BizTalk中。 “详细信息”(重复)记录可以在XML消息中以任何顺序出现。
<Document>
<Details>
<Name>ABC</Name>
</Details>
<Details>
<Name>DEF</Name>
</Details>
<Details>
<Name>GHI</Name>
</Details>
<Details>
<Name>JKL</Name>
</Details>
<Details>
<Name>MNO</Name>
</Details>
</Document>
我在Orchestration的循环中提取所有'Name'字段值,但无法验证它。
如果符合以下2个条件,则XML应该是有效的:
根据我的评论,您将需要在表达式形状中执行XPath,例如
nNumberItemsABC = System.Convert.ToInt32(xpath(MsgName,"count(/*[local-name()='Document' and namespace-uri()='']/*[local-name()='Details' and namespace-uri()=''][Name='ABC']/*[local-name()='Name' and namespace-uri()=''])"));
nNumberItemsDEF = System.Convert.ToInt32(xpath(MsgName,"count(/*[local-name()='Document' and namespace-uri()='']/*[local-name()='Details' and namespace-uri()=''][Name='DEF']/*[local-name()='Name' and namespace-uri()=''])"));
nNumberItemsGHI = System.Convert.ToInt32(xpath(MsgName,"count(/*[local-name()='Document' and namespace-uri()='']/*[local-name()='Details' and namespace-uri()=''][Name='GHI']/*[local-name()='Name' and namespace-uri()=''])"));
然后有一个Decide形状,检查是否存在强制性形状(等于1)