下面是SOAP消息的主体(WCF服务的主体) -
<s:Body>
<Multiply xmlns="http://tempuri.org/">
<x xmlns:a="http://schemas.datacontract.org/2004/07/CService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:L>4</a:L>
<a:M>3</a:M>
</x>
<y xmlns:a="http://schemas.datacontract.org/2004/07/CService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:L>-2</a:L>
<a:M>2</a:M>
</y>
</Multiply>
</s:Body>
在上面,操作Multiply有两个相同类型的参数:x&amp;年。 CService有其他操作只有一个相同类型的参数(与x或y相同)。
我将命名空间表定义为
<namespaceTable>
<add prefix="o" namespace="http://tempuri.org/" />
</namespaceTable>
现在我想使用XPath定义过滤器,以确定是否有任何操作具有一个或两个参数来相应地路由消息,如下所示 -
<filters>
<filter name="one" filterType="XPath" filterData="//o:Count > 1" />
<filter name="two" filterType="XPath" filterData="//o:Count = 1" />
</filters>
但我无法找到任何解决方案。有没有办法计算肥皂操作中的参数数量?
答案 0 :(得分:0)
如果我理解你,你的XPath是不正确的!
我想你想要算Multiply
有两个孩子,x
和y
?如果是这样,那么您只需要计算名称空间Multiply
http://tempuri.org/
的子项
e.g。 count(//o:Multiply/child::o:*)
<filters>
<filter name="one" filterType="XPath" filterData="count(//o:Multiply/child::o:*) gt 1" />
<filter name="two" filterType="XPath" filterData="count(//o:Multiply/child::o:*) eq 1" />
</filters>