XML可能看起来像垃圾邮件,但是由于数据的敏感性,我不得不删除其上的数据。 XML的原始大小为15MB。 :)
下面是我要查询具有“ | 40 |”的Funds元素/节点数的XML作为FundGroupIDConcat
属性和 PegStatusCurr = 1
我尝试评估此查询,但未能使其运行。 (我正在运行的是VB.NET)
(count(.//FundGroups/FundGroup/FundGroups/FundGroup/FundList/Fund[@PegStatusCurr ,""1"")>0)
XML:
<FR>
<FundGroups>
<FundGroup FundGroupID="-1" FundGroupIDConcat="-1|" >
<FundGroups>
<FundGroup FundGroupID="100" FundGroupIDConcat="-1|100|">
<FundList>
<Fund PegStatusCurr="1" PegStatusNew="1">
<Name>Account</Name>
</Fund>
</FundList>
</FundGroup>
<FundGroup FundGroupID="7" FundGroupIDConcat="-1|7|">
<FundGroups>
<FundGroup FundGroupID="40" FundGroupIDConcat="-1|7|40|">
<FundGroups>
<FundGroup FundGroupID="3240" FundGroupIDConcat="-1|7|40|3240|">
<FundList>
<Fund PegStatusCurr="1" PegStatusNew="1">
<Name>Century One</Name>
</Fund>
<Fund PegStatusCurr="2" PegStatusNew="2">
<Name>Century Two</Name>
</Fund>
</FundList>
</FundGroup>
</FundGroups>
</FundGroup>
</FundGroups>
</FundGroup>
</FundGroups>
</FundGroup>
</FundGroups>
</FR>
我是XPath Query的新手,这不是我每天都要处理的问题,并且无法解决。
任何帮助都会有很大帮助。
谢谢!
答案 0 :(得分:1)
要获得唯一的匹配项,请使用以下表达式:
.//FundGroups/FundGroup/FundGroups/FundGroup/FundList/Fund[contains(@FundGroupIDConcat,'|40|') and @PegStatusCurr = 1]
一个count(...)
表达式,它返回1
元素作为示例XML的结果。
剩下的一个问题是40
的值,在该值之前或之后没有|
。
但是您并没有要求它,所以这可能根本不是问题...
答案 1 :(得分:0)
count(.//FundGroups/FundGroup/FundGroups/FundGroup[contains(@FundGroupIDConcat,'|40|')]/FundList/Fund[@PegStatusCurr = 1])
这将提供资金的数量