我有一个包含if语句的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
如果我使用http://videlibri.sourceforge.net/cgi-bin/xidelcgi测试此xpath,则显示为有效。
答案 0 :(得分:0)
将Cpath语句中的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");
}