如何将变量插入到xpath表达式语句C#中?

时间:2017-08-08 02:14:55

标签: c# xpath expression

我是Xpath表达的新手,我有一些问题要问。

我想将字符串selectedcountry插入到我的xpath表达式中,所以我尝试这样编码,//a[contains(@href, "+selectedCountry+")]/text()但是找回了我想要的错误数据。

会话中的selectedCountry字符串是从用户检索的,因此我确信其中的值是正确的。

当我更改为//a[contains(@href," "+selectedCountry+" ")]/text()时,会出现以下错误:

  

发生了'System.ArgumentNullException'类型的异常   System.Core.dll但未在用户代码中处理

     

附加信息:值不能为空。

情况1

string selectedCountry = Session["SelectedCountry"].ToString();

HtmlNode[] newnode = doc3.DocumentNode.SelectNodes("//a[contains(@href,'china')]/text()").ToArray();

结果:

  

中国在有争议的海域支持与菲律宾的联合能源开发   中国敦促东盟拒绝外界干涉巴拿马开放大使馆   在削减与台湾关系后的中国,博茨瓦纳确认了达赖喇嘛的访问   尽管中国愤怒

情况2

string selectedCountry = Session["SelectedCountry"].ToString();

HtmlNode[] newnode = doc3.DocumentNode.SelectNodes("//a[contains(@href,"+selectedCountry+")]/text()").ToArray();

结果:

  

跳转到主要亚洲   PacificSingaporeWorldCNA   InsiderBusinessSportLifestyleTechnologyHealthCommentaryCatch-up TV

1 个答案:

答案 0 :(得分:0)

如果"//a[contains(@href, 'china')]/text()"有效但"//a[contains(@href, "+selectedCountry+")]/text()"没有,请确保selectedCountry包含'china',包括撇号

如果它不包含撇号,请将它们添加到变量中或将它们添加到字符串中:

"//a[contains(@href, '"+selectedCountry+"')]/text()"