2013-07-12 165 views
0

我有以下代码以执行XPath表达式:错误在c#执行xpath表达式

nodeList = xmlDocument.SelectNodes("if(count(//Claims[ClaimNoticeCd='SUBCLAIM']) > 1) 
then //Claims[ClaimNoticeCd='SUBCLAIM'] else //Claims[ClaimNoticeCd='CLAIM']"); 

但它给我的xpath异常等:

如果(计数(// 1.一种ClaimNoticeCd = 'SUBCLAIM'])> 1),那么//索赔[ClaimNoticeCd = 'SUBCLAIM'] //其他索赔[ClaimNoticeCd = '索赔']”有您所使用的XPath无效令牌

+2

你或许应该表现出你的XML – DGibbs

+0

始终岗位例如XML,这样做时您会收到更好的答案。还请阅读[SSCCE](http://www.sscce.org)。您当前的查询说“如果在所有输入中至少有两个子索赔,则返回这些索赔,否则返回所有索赔”。这是你想实现的吗?至于我可以从你的表达式派生你的XML结构,我不太确定。并且:如果他们解决了你的问题,你应该接受答案,阅读[问]。 –

回答

1

在XPath 1.0没有的if/then/else语句,但你可以使用相对的谓词和节点集工会就假:

//Claims[count(//Claims[ClaimNoticeCd='SUBCLAIM'])>1][ClaimNoticeCd='SUBCLAIM'] 
    | 
//Claims[count(//Claims[ClaimNoticeCd='SUBCLAIM'])<=1][ClaimNoticeCd='CLAIM'] 
+0

谢谢Jens!它的工作正常 – Raj