2014-09-03 87 views
1

我有一個包含if語句的xpath。我想用c#來評估它。如果我沒有在任何XPath的功能我用如何用C語言解析xpath語句#

node.SelectSingleNode(xpath); 

當我試着使用if語句,我得到一個無效的令牌錯誤做到這一點。

這是我的XPath:

if (substring-before(substring-after(//IzdaniRacunEnostavni/@xsi:noNamespaceSchemaLocation,'http://www.gzs.si/e-poslovanje/sheme/'),'_EnostavniRacun.xsd')='eSLOG_1-6') then //Postavka/StevilkaVrstice[text()!='']/../../ZneskiPostavke/VrstaZneskaPostavke[text() ='203']/../ZnesekPostavke else  //Postavka/StevilkaVrstice[text() !='']/../../ZneskiPostavke/VrstaZneskaPostavke[text() ='66']/../ZnesekPostavke 

如果我測試此XPath與http://videlibri.sourceforge.net/cgi-bin/xidelcgi它顯示爲有效。

+0

是http://stackoverflow.com/questions/971067/is-there -an-if-then-else-statement-in-xpath你在找什麼?請注意,您添加的驗證器是用於XPath 2.0,它不是.Net Framework的Xml類的一部分。 – 2014-09-03 06:19:24

+0

嗯,我相信.NET 4.5支持xpath 2.0 ... – n32303 2014-09-03 06:22:59

+0

不應該是「eq」而不是等於在IF表達式中籤名(=) – Vizard 2014-09-03 06:24:42

回答

0

將C++語句中的if-else部分轉換爲C#語句也許是使用C#和XPath 1.0時最好的選擇。您的XPath if-else塊的格式版本是這樣的:

if (substring-before(substring-after(//IzdaniRacunEnostavni/@xsi:noNamespaceSchemaLocation,'http://www.gzs.si/e-poslovanje/sheme/'),'_EnostavniRacun.xsd')='eSLOG_1-6') 

then 

//Postavka/StevilkaVrstice[text()!='']/../../ZneskiPostavke/VrstaZneskaPostavke[text() ='203']/../ZnesekPostavke 

else  

//Postavka/StevilkaVrstice[text() !='']/../../ZneskiPostavke/VrstaZneskaPostavke[text() ='66']/../ZnesekPostavke 

嘗試將其轉化爲這個C#if-else塊:

var xpathIfResult = node.SelectSingleNode("//IzdaniRacunEnostavni[substring-before(substring-after(@xsi:noNamespaceSchemaLocation,'http://www.gzs.si/e-poslovanje/sheme/'),'_EnostavniRacun.xsd')='eSLOG_1-6']"); 
if(xpathIfResult != null) 
{ 
    result = node.SelectSingleNode("//Postavka/StevilkaVrstice[text() !='']/../../ZneskiPostavke/VrstaZneskaPostavke[text() ='66']/../ZnesekPostavke"); 
} 
else 
{ 
    result = node.SelectSingleNode("//Postavka/StevilkaVrstice[text() !='']/../../ZneskiPostavke/VrstaZneskaPostavke[text() ='66']/../ZnesekPostavke"); 
} 
+0

這會工作,但不是在我的情況下...我已經找到xpath2.codeplex.com,它的工作原理.. – n32303 2014-09-03 07:58:04