2014-09-03 86 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