2013-07-12 193 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